diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 4ec29710700..8377527aa39 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -56,3 +56,28 @@ unsigned X86RegisterInfo::getFramePointer() const { unsigned X86RegisterInfo::getStackPointer() const { return X86::ESP; } + +const unsigned* X86RegisterInfo::getCalleeSaveRegs() const { + static const unsigned CalleeSaveRegs[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, + MRegisterInfo::NoRegister }; + return CalleeSaveRegs; +} + + +const unsigned* X86RegisterInfo::getCallerSaveRegs() const { + static const unsigned CallerSaveRegs[] = { X86::EAX, X86::ECX, X86::EDX, + MRegisterInfo::NoRegister }; + return CallerSaveRegs; +} + +void +X86RegisterInfo::buildReg2RegClassMap +(std::map& Reg2RegClassMap) const +{ + for (MRegisterInfo::const_iterator I = const_regclass_begin(), + E = const_regclass_end(); I != E; ++I) + { + I->buildReg2RegClassMap(Reg2RegClassMap); + } +} diff --git a/lib/Target/X86/X86RegisterInfo.h b/lib/Target/X86/X86RegisterInfo.h index 13140879f48..5487612c924 100644 --- a/lib/Target/X86/X86RegisterInfo.h +++ b/lib/Target/X86/X86RegisterInfo.h @@ -32,6 +32,9 @@ struct X86RegisterInfo : public MRegisterInfo { unsigned getFramePointer() const; unsigned getStackPointer() const; + const unsigned* getCalleeSaveRegs() const; + const unsigned* getCallerSaveRegs() const; + /// Returns register class appropriate for input SSA register /// const TargetRegisterClass *getClassForReg(unsigned Reg) const; @@ -40,6 +43,8 @@ struct X86RegisterInfo : public MRegisterInfo { unsigned getNumRegClasses() const; + void buildReg2RegClassMap(std::map& + Reg2RegClassMap) const; };