diff options
author | Owen Anderson <resistor@mac.com> | 2014-03-14 05:02:18 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2014-03-14 05:02:18 +0000 |
commit | ec5d480329e522ccd47cc191e8d4a0c99d4fa04b (patch) | |
tree | 82a924fc0b5ed31998fc2115999d65e09eb1306c | |
parent | 516273ba99271cee85ade35832404da96859ca88 (diff) | |
download | bcm5719-llvm-ec5d480329e522ccd47cc191e8d4a0c99d4fa04b.tar.gz bcm5719-llvm-ec5d480329e522ccd47cc191e8d4a0c99d4fa04b.zip |
Revert r203883 (which was more of a bandaid) and fix the real underlying
issue in that the new MachineRegisterInfo bundle iterators didn't
dereference to the START of the bundle, while the old skipBundle()
method did.
llvm-svn: 203890
-rw-r--r-- | llvm/include/llvm/CodeGen/MachineRegisterInfo.h | 2 | ||||
-rw-r--r-- | llvm/lib/CodeGen/InlineSpiller.cpp | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineRegisterInfo.h b/llvm/include/llvm/CodeGen/MachineRegisterInfo.h index dd9e2803bd2..9a49b19316a 100644 --- a/llvm/include/llvm/CodeGen/MachineRegisterInfo.h +++ b/llvm/include/llvm/CodeGen/MachineRegisterInfo.h @@ -856,11 +856,13 @@ public: // Retrieve a reference to the current operand. MachineInstr &operator*() const { assert(Op && "Cannot dereference end iterator!"); + if (ByBundle) return *(getBundleStart(Op->getParent())); return *Op->getParent(); } MachineInstr *operator->() const { assert(Op && "Cannot dereference end iterator!"); + if (ByBundle) return getBundleStart(Op->getParent()); return Op->getParent(); } }; diff --git a/llvm/lib/CodeGen/InlineSpiller.cpp b/llvm/lib/CodeGen/InlineSpiller.cpp index 5bf7b112869..64211c8d31b 100644 --- a/llvm/lib/CodeGen/InlineSpiller.cpp +++ b/llvm/lib/CodeGen/InlineSpiller.cpp @@ -1196,7 +1196,7 @@ void InlineSpiller::spillAroundUses(unsigned Reg) { for (MachineRegisterInfo::reg_bundle_iterator RegI = MRI.reg_bundle_begin(Reg), E = MRI.reg_bundle_end(); RegI != E; ) { - MachineInstr *MI = getBundleStart(&*(RegI++)); + MachineInstr *MI = &*(RegI++); // Debug values are not allowed to affect codegen. if (MI->isDebugValue()) { |