--- lib/Target/Sparc/SparcISelLowering.cpp (revision 223367) +++ 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,20 @@ return; } } + +#include "llvm/Support/raw_ostream.h" + +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; + + llvm::outs() << "Regname = " << RegName << "\n"; + + report_fatal_error("Invalid register name global variable"); +} --- lib/Target/Sparc/SparcISelLowering.h (revision 223367) +++ 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