Index: lib/Target/Sparc/SparcISelLowering.cpp =================================================================== --- lib/Target/Sparc/SparcISelLowering.cpp (revision 222951) +++ lib/Target/Sparc/SparcISelLowering.cpp (working copy) @@ -18,6 +18,7 @@ #include "SparcRegisterInfo.h" #include "SparcTargetMachine.h" #include "SparcTargetObjectFile.h" +#include "llvm/ADT/StringSwitch.h" #include "llvm/CodeGen/CallingConvLower.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineFunction.h" @@ -3219,3 +3220,16 @@ return; } } + +unsigned SparcTargetLowering::getRegisterByName(const char* RegName, + EVT VT) const { + unsigned Reg = StringSwitch(RegName) + .Case("g5", SP::G5) + .Case("g6", SP::G6) + .Case("g7", SP::G7) + .Default(0); + if (Reg) + return Reg; + + report_fatal_error("Invalid register name global variable"); +} Index: lib/Target/Sparc/SparcISelLowering.h =================================================================== --- lib/Target/Sparc/SparcISelLowering.h (revision 222951) +++ lib/Target/Sparc/SparcISelLowering.h (working copy) @@ -172,6 +172,8 @@ MachineBasicBlock *BB, unsigned Opcode, unsigned CondCode = 0) const; + + unsigned getRegisterByName(const char* RegName, EVT VT) const override; }; } // end namespace llvm