| 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) {
|
|
|