diff options
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp | 16 | 
1 files changed, 6 insertions, 10 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp index b84eb36dc22..b67d2e2acf9 100644 --- a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp +++ b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp @@ -492,16 +492,12 @@ static void trackRegDefsUses(const MachineInstr *MI, BitVector &ModifiedRegs,  }  static bool inBoundsForPair(bool IsUnscaled, int Offset, int OffsetStride) { -  if (!IsUnscaled && (Offset > 63 || Offset < -64)) -    return false; -  if (IsUnscaled) { -    // Convert the byte-offset used by unscaled into an "element" offset used -    // by the scaled pair load/store instructions. -    int ElemOffset = Offset / OffsetStride; -    if (ElemOffset > 63 || ElemOffset < -64) -      return false; -  } -  return true; +  // Convert the byte-offset used by unscaled into an "element" offset used +  // by the scaled pair load/store instructions. +  if (IsUnscaled) +    Offset /= OffsetStride; + +  return Offset <= 63 && Offset >= -64;  }  // Do alignment, specialized to power of 2 and for signed ints,  | 

