mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-03 14:21:30 +00:00
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
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user