diff options
author | Andrew Trick <atrick@apple.com> | 2013-11-17 01:36:23 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2013-11-17 01:36:23 +0000 |
commit | bb756ca24401e190e3b704e5d92759c7a79cc6b7 (patch) | |
tree | 0c4bcba47b3a9717739a7c8f876a88363dc3ae02 /include/llvm/CodeGen/StackMaps.h | |
parent | b7dabccbce5fc6fcf7b36669eb04abcb001e7f9e (diff) | |
download | llvm-bb756ca24401e190e3b704e5d92759c7a79cc6b7.tar.gz llvm-bb756ca24401e190e3b704e5d92759c7a79cc6b7.tar.bz2 llvm-bb756ca24401e190e3b704e5d92759c7a79cc6b7.tar.xz |
Added a size field to the stack map record to handle subregister spills.
Implementing this on bigendian platforms could get strange. I added a
target hook, getStackSlotRange, per Jakob's recommendation to make
this as explicit as possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194942 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/StackMaps.h')
-rw-r--r-- | include/llvm/CodeGen/StackMaps.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/StackMaps.h b/include/llvm/CodeGen/StackMaps.h index c79c3428b6..f832132aac 100644 --- a/include/llvm/CodeGen/StackMaps.h +++ b/include/llvm/CodeGen/StackMaps.h @@ -26,18 +26,19 @@ public: enum LocationType { Unprocessed, Register, Direct, Indirect, Constant, ConstantIndex }; LocationType LocType; + unsigned Size; unsigned Reg; int64_t Offset; - Location() : LocType(Unprocessed), Reg(0), Offset(0) {} - Location(LocationType LocType, unsigned Reg, int64_t Offset) - : LocType(LocType), Reg(Reg), Offset(Offset) {} + Location() : LocType(Unprocessed), Size(0), Reg(0), Offset(0) {} + Location(LocationType LocType, unsigned Size, unsigned Reg, int64_t Offset) + : LocType(LocType), Size(Size), Reg(Reg), Offset(Offset) {} }; // Typedef a function pointer for functions that parse sequences of operands // and return a Location, plus a new "next" operand iterator. typedef std::pair<Location, MachineInstr::const_mop_iterator> (*OperandParser)(MachineInstr::const_mop_iterator, - MachineInstr::const_mop_iterator); + MachineInstr::const_mop_iterator, const TargetMachine&); // OpTypes are used to encode information about the following logical // operand (which may consist of several MachineOperands) for the |