diff options
Diffstat (limited to 'lib/CodeGen/RegAllocSimple.cpp')
-rw-r--r-- | lib/CodeGen/RegAllocSimple.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/CodeGen/RegAllocSimple.cpp b/lib/CodeGen/RegAllocSimple.cpp index 5d94f0af85..c6faead658 100644 --- a/lib/CodeGen/RegAllocSimple.cpp +++ b/lib/CodeGen/RegAllocSimple.cpp @@ -166,12 +166,16 @@ void RegAllocSimple::AllocateBasicBlock(MachineBasicBlock &MBB) { unsigned Opcode = MI->getOpcode(); const TargetInstrDescriptor &Desc = TM->getInstrInfo()->get(Opcode); const unsigned *Regs; - for (Regs = Desc.ImplicitUses; *Regs; ++Regs) - RegsUsed[*Regs] = true; + if (Desc.ImplicitUses) { + for (Regs = Desc.ImplicitUses; *Regs; ++Regs) + RegsUsed[*Regs] = true; + } - for (Regs = Desc.ImplicitDefs; *Regs; ++Regs) { - RegsUsed[*Regs] = true; - PhysRegsEverUsed[*Regs] = true; + if (Desc.ImplicitDefs) { + for (Regs = Desc.ImplicitDefs; *Regs; ++Regs) { + RegsUsed[*Regs] = true; + PhysRegsEverUsed[*Regs] = true; + } } // Loop over uses, move from memory into registers. |