Index: src/IceInst.h |
diff --git a/src/IceInst.h b/src/IceInst.h |
index d68d201cd8a04fa36e068b1748be8952bf2049f7..a1e51617a360c526e6c27e09ae00ae787de4ca44 100644 |
--- a/src/IceInst.h |
+++ b/src/IceInst.h |
@@ -92,8 +92,8 @@ public: |
bool hasSideEffects() const { return HasSideEffects; } |
- bool isDestNonKillable() const { return IsDestNonKillable; } |
- void setDestNonKillable() { IsDestNonKillable = true; } |
+ bool isDestRedefined() const { return IsDestRedefined; } |
+ void setDestRedefined() { IsDestRedefined = true; } |
Variable *getDest() const { return Dest; } |
@@ -192,10 +192,15 @@ protected: |
/// a volatile load that can't be removed even if its Dest variable is not |
/// live. |
bool HasSideEffects = false; |
- /// IsDestNonKillable means that liveness analysis shouldn't consider this |
- /// instruction to kill the Dest variable. This is used when lowering produces |
- /// two assignments to the same variable. |
- bool IsDestNonKillable = false; |
+ /// IsDestRedefined indicates that this instruction is not the first |
+ /// definition of Dest in the basic block. The effect is that liveness |
+ /// analysis shouldn't consider this instruction to be the start of Dest's |
+ /// live range; rather, there is some other instruction earlier in the basic |
+ /// block with the same Dest. This is maintained because liveness analysis |
+ /// has an invariant (primarily for performance reasons) that any Variable's |
+ /// live range recorded in a basic block has at most one start and at most one |
+ /// end. |
+ bool IsDestRedefined = false; |
Variable *Dest; |
const SizeT MaxSrcs; // only used for assert |