Index: src/IceTargetLowering.cpp |
diff --git a/src/IceTargetLowering.cpp b/src/IceTargetLowering.cpp |
index 0ee0afa2301929fa5e2596a709f0db2bd03e3886..4f09a6bcbb86f311f19f82eccf482c0563802f95 100644 |
--- a/src/IceTargetLowering.cpp |
+++ b/src/IceTargetLowering.cpp |
@@ -363,7 +363,9 @@ void TargetLowering::getVarStackSlotParams( |
VarList SpilledVariables; |
for (Variable *Var : Variables) { |
if (Var->hasReg()) { |
- RegsUsed[Var->getRegNum()] = true; |
+ // Rematerializable uses of stack/frame do not count as uses for spilling. |
Jim Stichnoth
2015/11/16 22:47:18
stack/frame pointer
|
+ if (!Var->isRematerializable()) |
+ RegsUsed[Var->getRegNum()] = true; |
continue; |
} |
// An argument either does not need a stack slot (if passed in a register) |