aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/MachineRegisterInfo.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-03-01 01:43:25 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-03-01 01:43:25 +0000
commit66c994c2dbd1a76418fdd0acb138aa029538ffe5 (patch)
treee55062e6f93cf35a758d49e316c92dcda5607933 /include/llvm/CodeGen/MachineRegisterInfo.h
parent5c2b4ea73c8f48bb5f96c86fe437385b8fb3dcda (diff)
downloadexternal_llvm-66c994c2dbd1a76418fdd0acb138aa029538ffe5.zip
external_llvm-66c994c2dbd1a76418fdd0acb138aa029538ffe5.tar.gz
external_llvm-66c994c2dbd1a76418fdd0acb138aa029538ffe5.tar.bz2
Make InlineSpiller bundle-aware.
Simply treat bundles as instructions. Spill code is inserted between bundles, never inside a bundle. Rewrite all operands in a bundle at once. Don't attempt and memory operand folding inside bundles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151787 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineRegisterInfo.h')
-rw-r--r--include/llvm/CodeGen/MachineRegisterInfo.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/MachineRegisterInfo.h b/include/llvm/CodeGen/MachineRegisterInfo.h
index 36fac85..bb15ca3 100644
--- a/include/llvm/CodeGen/MachineRegisterInfo.h
+++ b/include/llvm/CodeGen/MachineRegisterInfo.h
@@ -15,6 +15,7 @@
#define LLVM_CODEGEN_MACHINEREGISTERINFO_H
#include "llvm/Target/TargetRegisterInfo.h"
+#include "llvm/CodeGen/MachineInstrBundle.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/IndexedMap.h"
#include <vector>
@@ -483,6 +484,14 @@ public:
return MI;
}
+ MachineInstr *skipBundle() {
+ if (!Op) return 0;
+ MachineInstr *MI = getBundleStart(Op->getParent());
+ do ++*this;
+ while (Op && getBundleStart(Op->getParent()) == MI);
+ return MI;
+ }
+
MachineOperand &getOperand() const {
assert(Op && "Cannot dereference end iterator!");
return *Op;