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/CodeGen | |
| 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/CodeGen')
| -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. |

