//===- ARMRegisterInfo.cpp - ARM Register Information -----------*- C++ -*-===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file contains the ARM implementation of the MRegisterInfo class.////===----------------------------------------------------------------------===//#include"ARM.h"#include"ARMAddressingModes.h"#include"ARMInstrInfo.h"#include"ARMMachineFunctionInfo.h"#include"ARMRegisterInfo.h"#include"ARMSubtarget.h"#include"llvm/Constants.h"#include"llvm/DerivedTypes.h"#include"llvm/CodeGen/MachineConstantPool.h"#include"llvm/CodeGen/MachineFrameInfo.h"#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/MachineInstrBuilder.h"#include"llvm/CodeGen/MachineLocation.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/CodeGen/RegisterScavenging.h"#include"llvm/Target/TargetFrameInfo.h"#include"llvm/Target/TargetMachine.h"#include"llvm/Target/TargetOptions.h"#include"llvm/ADT/BitVector.h"#include"llvm/ADT/SmallVector.h"#include"llvm/ADT/STLExtras.h"#include"llvm/Support/CommandLine.h"#include<algorithm>usingnamespacellvm;staticcl::opt<bool>ThumbRegScavenging("enable-thumb-reg-scavenging",cl::Hidden,cl::desc("Enable register scavenging on Thumb"));unsignedARMRegisterInfo::getRegisterNumbering(unsignedRegEnum){usingnamespaceARM;switch(RegEnum){caseR0:caseS0:caseD0:return0;caseR1:caseS1:caseD1:return1;caseR2:caseS2:caseD2:return2;caseR3: