Index: src/IceTargetLoweringX86BaseImpl.h |
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h |
index 8f372196779cc6b3c068655afb1ccd4ff3948165..09dfd769a717e2272c7dc93f745f76dcd6148ae0 100644 |
--- a/src/IceTargetLoweringX86BaseImpl.h |
+++ b/src/IceTargetLoweringX86BaseImpl.h |
@@ -1317,6 +1317,10 @@ void TargetX86Base<Machine>::lowerShift64(InstArithmetic::OpKind Op, |
template <class Machine> |
void TargetX86Base<Machine>::lowerArithmetic(const InstArithmetic *Inst) { |
Variable *Dest = Inst->getDest(); |
+ if (Dest->isRematerializable()) { |
+ Context.insert(InstFakeDef::create(Func, Dest)); |
+ return; |
+ } |
Type Ty = Dest->getType(); |
Operand *Src0 = legalize(Inst->getSrc(0)); |
Operand *Src1 = legalize(Inst->getSrc(1)); |
@@ -1897,6 +1901,10 @@ void TargetX86Base<Machine>::lowerArithmetic(const InstArithmetic *Inst) { |
template <class Machine> |
void TargetX86Base<Machine>::lowerAssign(const InstAssign *Inst) { |
Variable *Dest = Inst->getDest(); |
+ if (Dest->isRematerializable()) { |
+ Context.insert(InstFakeDef::create(Func, Dest)); |
+ return; |
+ } |
Operand *Src0 = Inst->getSrc(0); |
assert(Dest->getType() == Src0->getType()); |
if (!Traits::Is64Bit && Dest->getType() == IceType_i64) { |