diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-03-24 15:22:11 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-03-24 15:22:11 +0000 | 
| commit | 246eda43bd2e070811a26451c42f55fc47416413 (patch) | |
| tree | 883aa2757863549b9a3e9e36e0c390295245ee03 /llvm/lib | |
| parent | d7a1860ebacbd9ddcfe06c5d31a0b9184dd3157f (diff) | |
| download | bcm5719-llvm-246eda43bd2e070811a26451c42f55fc47416413.tar.gz bcm5719-llvm-246eda43bd2e070811a26451c42f55fc47416413.zip | |
simplify this code a bit now that "allocation to a vreg class" can never
fail.
llvm-svn: 67616
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp | 29 | 
1 files changed, 13 insertions, 16 deletions
| diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp index 90ebc4a84ed..49e67443515 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp @@ -4929,9 +4929,7 @@ GetRegistersForValue(SDISelAsmOperandInfo &OpInfo,    // Otherwise, if this was a reference to an LLVM register class, create vregs    // for this reference. -  std::vector<unsigned> RegClassRegs; -  const TargetRegisterClass *RC = PhysReg.second; -  if (RC) { +  if (PhysReg.second != 0) {      RegVT = *PhysReg.second->vt_begin();      if (OpInfo.ConstraintVT == MVT::Other)        ValueVT = RegVT; @@ -4943,13 +4941,14 @@ GetRegistersForValue(SDISelAsmOperandInfo &OpInfo,      OpInfo.AssignedRegs = RegsForValue(TLI, Regs, RegVT, ValueVT);      return; -  } else { -    // This is a reference to a register class that doesn't directly correspond -    // to an LLVM register class.  Allocate NumRegs consecutive, available, -    // registers from the class. -    RegClassRegs = TLI.getRegClassForInlineAsmConstraint(OpInfo.ConstraintCode, -                                                         OpInfo.ConstraintVT);    } +   +  // This is a reference to a register class that doesn't directly correspond +  // to an LLVM register class.  Allocate NumRegs consecutive, available, +  // registers from the class. +  std::vector<unsigned> RegClassRegs +    = TLI.getRegClassForInlineAsmConstraint(OpInfo.ConstraintCode, +                                            OpInfo.ConstraintVT);    const TargetRegisterInfo *TRI = DAG.getTarget().getRegisterInfo();    unsigned NumAllocated = 0; @@ -4965,13 +4964,11 @@ GetRegistersForValue(SDISelAsmOperandInfo &OpInfo,      // Check to see if this register is allocatable (i.e. don't give out the      // stack pointer). -    if (RC == 0) { -      RC = isAllocatableRegister(Reg, MF, TLI, TRI); -      if (!RC) {        // Couldn't allocate this register. -        // Reset NumAllocated to make sure we return consecutive registers. -        NumAllocated = 0; -        continue; -      } +    const TargetRegisterClass *RC = isAllocatableRegister(Reg, MF, TLI, TRI); +    if (!RC) {        // Couldn't allocate this register. +      // Reset NumAllocated to make sure we return consecutive registers. +      NumAllocated = 0; +      continue;      }      // Okay, this register is good, we can use it. | 

