summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-03-24 15:22:11 +0000
committerChris Lattner <sabre@nondot.org>2009-03-24 15:22:11 +0000
commit246eda43bd2e070811a26451c42f55fc47416413 (patch)
tree883aa2757863549b9a3e9e36e0c390295245ee03 /llvm/lib/CodeGen
parentd7a1860ebacbd9ddcfe06c5d31a0b9184dd3157f (diff)
downloadbcm5719-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.cpp29
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.
OpenPOWER on IntegriCloud