diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineFunction.h | 5 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/MachineFunction.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 17 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 21 | 
4 files changed, 23 insertions, 30 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h index dc7fa8cb167..f427c72e333 100644 --- a/llvm/include/llvm/CodeGen/MachineFunction.h +++ b/llvm/include/llvm/CodeGen/MachineFunction.h @@ -33,6 +33,7 @@ class MachineFrameInfo;  class MachineConstantPool;  class MachineJumpTableInfo;  class TargetMachine; +class TargetRegisterClass;  template <>  struct ilist_traits<MachineBasicBlock> @@ -238,6 +239,10 @@ public:    typedef std::reverse_iterator<const_iterator> const_reverse_iterator;    typedef std::reverse_iterator<iterator>             reverse_iterator; +  /// addLiveIn - Add the specified physical register as a live-in value and +  /// create a corresponding virtual register for it. +  unsigned addLiveIn(unsigned PReg, const TargetRegisterClass *RC); +    //===--------------------------------------------------------------------===//    // BasicBlock accessor functions.    // diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp index fc0e99fe4bb..e0cdad7783b 100644 --- a/llvm/lib/CodeGen/MachineFunction.cpp +++ b/llvm/lib/CodeGen/MachineFunction.cpp @@ -385,6 +385,16 @@ MachineFunction& MachineFunction::get(const Function *F)    return *mc;  } +/// addLiveIn - Add the specified physical register as a live-in value and +/// create a corresponding virtual register for it. +unsigned MachineFunction::addLiveIn(unsigned PReg, +                                    const TargetRegisterClass *RC) { +  assert(RC->contains(PReg) && "Not the correct regclass!"); +  unsigned VReg = getRegInfo().createVirtualRegister(RC); +  getRegInfo().addLiveIn(PReg, VReg); +  return VReg; +} +  /// getOrCreateDebugLocID - Look up the DebugLocTuple index with the given  /// source file, line, and column. If none currently exists, create a new  /// DebugLocTuple, and insert it into the DebugIdMap. diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index fdcccffd877..e35b6672a31 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -1053,17 +1053,6 @@ static SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG,    return DAG.getStore(Op.getOperand(0), dl, FR, Op.getOperand(1), SV, 0);  } -/// AddLiveIn - This helper function adds the specified physical register to the -/// MachineFunction as a live-in value.  It also creates a corresponding virtual -/// register for it. -static unsigned AddLiveIn(MachineFunction &MF, unsigned PReg, -                          const TargetRegisterClass *RC) { -  assert(RC->contains(PReg) && "Not the correct regclass!"); -  unsigned VReg = MF.getRegInfo().createVirtualRegister(RC); -  MF.getRegInfo().addLiveIn(PReg, VReg); -  return VReg; -} -  SDValue  ARMTargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {    MachineFunction &MF = DAG.getMachineFunction(); @@ -1101,7 +1090,7 @@ ARMTargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {          assert(0 && "RegVT not supported by FORMAL_ARGUMENTS Lowering");        // Transform the arguments stored in physical registers into virtual ones. -      unsigned Reg = AddLiveIn(MF, VA.getLocReg(), RC); +      unsigned Reg = MF.addLiveIn(VA.getLocReg(), RC);        SDValue ArgValue = DAG.getCopyFromReg(Root, dl, Reg, RegVT);        // f64 is passed in i32 pairs and must be combined. @@ -1118,7 +1107,7 @@ ARMTargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {            SDValue FIN = DAG.getFrameIndex(FI, getPointerTy());            ArgValue2 = DAG.getLoad(MVT::i32, dl, Root, FIN, NULL, 0);          } else { -          Reg = AddLiveIn(MF, VA.getLocReg(), RC); +          Reg = MF.addLiveIn(VA.getLocReg(), RC);            ArgValue2 = DAG.getCopyFromReg(Root, dl, Reg, MVT::i32);          } @@ -1195,7 +1184,7 @@ ARMTargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {          else            RC = ARM::GPRRegisterClass; -        unsigned VReg = AddLiveIn(MF, GPRArgRegs[NumGPRs], RC); +        unsigned VReg = MF.addLiveIn(GPRArgRegs[NumGPRs], RC);          SDValue Val = DAG.getCopyFromReg(Root, dl, VReg, MVT::i32);          SDValue Store = DAG.getStore(Val.getValue(1), dl, Val, FIN, NULL, 0);          MemOps.push_back(Store); diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index cf3a6ce3b50..59cf85b792b 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -1147,17 +1147,6 @@ LowerCallResult(SDValue Chain, SDValue InFlag, CallSDNode *TheCall,  //  For info on fast calling convention see Fast Calling Convention (tail call)  //  implementation LowerX86_32FastCCCallTo. -/// AddLiveIn - This helper function adds the specified physical register to the -/// MachineFunction as a live in value.  It also creates a corresponding virtual -/// register for it. -static unsigned AddLiveIn(MachineFunction &MF, unsigned PReg, -                          const TargetRegisterClass *RC) { -  assert(RC->contains(PReg) && "Not the correct regclass!"); -  unsigned VReg = MF.getRegInfo().createVirtualRegister(RC); -  MF.getRegInfo().addLiveIn(PReg, VReg); -  return VReg; -} -  /// CallIsStructReturn - Determines whether a CALL node uses struct return  /// semantics.  static bool CallIsStructReturn(CallSDNode *TheCall) { @@ -1356,7 +1345,7 @@ X86TargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {          assert(0 && "Unknown argument type!");        } -      unsigned Reg = AddLiveIn(DAG.getMachineFunction(), VA.getLocReg(), RC); +      unsigned Reg = DAG.getMachineFunction().addLiveIn(VA.getLocReg(), RC);        SDValue ArgValue = DAG.getCopyFromReg(Root, dl, Reg, RegVT);        // If this is an 8 or 16-bit value, it is really passed promoted to 32 @@ -1472,8 +1461,8 @@ X86TargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {        SDValue FIN = DAG.getNode(ISD::ADD, dl, getPointerTy(), RSFIN,                                    DAG.getIntPtrConstant(VarArgsGPOffset));        for (; NumIntRegs != TotalNumIntRegs; ++NumIntRegs) { -        unsigned VReg = AddLiveIn(MF, GPR64ArgRegs[NumIntRegs], -                                  X86::GR64RegisterClass); +        unsigned VReg = MF.addLiveIn(GPR64ArgRegs[NumIntRegs], +                                     X86::GR64RegisterClass);          SDValue Val = DAG.getCopyFromReg(Root, dl, VReg, MVT::i64);          SDValue Store =            DAG.getStore(Val.getValue(1), dl, Val, FIN, @@ -1487,8 +1476,8 @@ X86TargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {        FIN = DAG.getNode(ISD::ADD, dl, getPointerTy(), RSFIN,                          DAG.getIntPtrConstant(VarArgsFPOffset));        for (; NumXMMRegs != TotalNumXMMRegs; ++NumXMMRegs) { -        unsigned VReg = AddLiveIn(MF, XMMArgRegs[NumXMMRegs], -                                  X86::VR128RegisterClass); +        unsigned VReg = MF.addLiveIn(XMMArgRegs[NumXMMRegs], +                                     X86::VR128RegisterClass);          SDValue Val = DAG.getCopyFromReg(Root, dl, VReg, MVT::v4f32);          SDValue Store =            DAG.getStore(Val.getValue(1), dl, Val, FIN,  | 

