Index: src/IceOperand.h |
diff --git a/src/IceOperand.h b/src/IceOperand.h |
index 8ad78a59c3576a2475be93e01d2d7d46333f2d08..eff4ee05e7dc4b3b217112ceeda85bc61bc5f2d8 100644 |
--- a/src/IceOperand.h |
+++ b/src/IceOperand.h |
@@ -512,6 +512,13 @@ public: |
void setRegClass(uint8_t RC) { RegisterClass = static_cast<RegClass>(RC); } |
RegClass getRegClass() const { return RegisterClass; } |
+ void setRematerializable(int32_t NewRegNum, int32_t NewOffset) { |
Jim Stichnoth
2015/11/11 17:39:45
I would group these methods with the RegRequiremen
sehr
2015/11/11 22:14:10
Done.
|
+ IsRematerializable = true; |
+ setRegNum(NewRegNum); |
+ setStackOffset(NewOffset); |
+ setMustHaveReg(); |
+ } |
+ bool isRematerializable() const { return IsRematerializable; } |
LiveRange &getLiveRange() { return Live; } |
const LiveRange &getLiveRange() const { return Live; } |
@@ -573,6 +580,9 @@ protected: |
/// and validating live ranges. This is usually reserved for the stack |
/// pointer and other physical registers specifically referenced by name. |
bool IgnoreLiveness = false; |
+ // If IsRematerializable, RegNum keeps track of which register (stack or frame |
+ // pointer), plus and StackOffset is the known offset from that register. |
Jim Stichnoth
2015/11/11 17:39:45
s/plus and/and/
sehr
2015/11/11 22:14:10
Done.
|
+ bool IsRematerializable = false; |
RegRequirement RegRequirement = RR_MayHaveRegister; |
RegClass RegisterClass; |
/// RegNum is the allocated register, or NoRegister if it isn't |