Index: src/IceTargetLoweringARM32.cpp |
diff --git a/src/IceTargetLoweringARM32.cpp b/src/IceTargetLoweringARM32.cpp |
index 6ca28ed04449dddbdef8e7082b53c559d8a8008c..d9d9afad195adf92eefef2d88814746d4e669660 100644 |
--- a/src/IceTargetLoweringARM32.cpp |
+++ b/src/IceTargetLoweringARM32.cpp |
@@ -4892,10 +4892,12 @@ bool matchAssign(const VariablesMetadata *VMetadata, Variable **Var, |
return false; |
Operand *SrcOp = VarAssign->getSrc(0); |
+ bool Optimized = false; |
if (auto *SrcVar = llvm::dyn_cast<Variable>(SrcOp)) { |
if (!VMetadata->isMultiDef(SrcVar) || |
// TODO: ensure SrcVar stays single-BB |
false) { |
+ Optimized = true; |
*Var = SrcVar; |
} else if (auto *Const = llvm::dyn_cast<ConstantInteger32>(SrcOp)) { |
int32_t MoreOffset = Const->getValue(); |
@@ -4904,13 +4906,15 @@ bool matchAssign(const VariablesMetadata *VMetadata, Variable **Var, |
return false; |
*Var = nullptr; |
*Offset += NewOffset; |
+ Optimized = true; |
} |
+ } |
+ if (Optimized) { |
*Reason = VarAssign; |
- return true; |
} |
- return false; |
+ return Optimized; |
} |
bool isAddOrSub(const Inst *Inst, InstArithmetic::OpKind *Kind) { |