[LoopStrengthReduce] Don't neglect the Fixup.Offset in isAMCompletelyFolded().
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>
Wed, 9 Aug 2017 11:27:46 +0000 (11:27 +0000)
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>
Wed, 9 Aug 2017 11:27:46 +0000 (11:27 +0000)
In the recursive call to isAMCompletelyFolded(), the passed offset should be
the sum of F.BaseOffset and Fixup.Offset.

Review: Quentin Colombet.
llvm-svn: 310462

llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp

index 4491198..fb0d2b3 100644 (file)
@@ -1657,8 +1657,8 @@ static bool isAMCompletelyFolded(const TargetTransformInfo &TTI,
   if (LU.Kind == LSRUse::Address && TTI.LSRWithInstrQueries()) {
     for (const LSRFixup &Fixup : LU.Fixups)
       if (!isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV,
-                                F.BaseOffset, F.HasBaseReg, F.Scale,
-                                Fixup.UserInst))
+                                (F.BaseOffset + Fixup.Offset), F.HasBaseReg,
+                                F.Scale, Fixup.UserInst))
         return false;
     return true;
   }