add a comment, make save/restore logic more obvious.
authorChris Lattner <sabre@nondot.org>
Wed, 26 Nov 2008 02:11:11 +0000 (02:11 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 26 Nov 2008 02:11:11 +0000 (02:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60076 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/CodeGenPrepare.cpp

index 99dba6dda0d92c17caf0ad0718b320e87a21a826..86168e8af45a4a01829fdf3bd7d583988446b3a5 100644 (file)
@@ -864,22 +864,22 @@ bool AddressingModeMatcher::MatchAddr(Value *Addr, unsigned Depth) {
   // Worse case, the target should support [reg] addressing modes. :)
   if (!AddrMode.HasBaseReg) {
     AddrMode.HasBaseReg = true;
+    AddrMode.BaseReg = Addr;
     // Still check for legality in case the target supports [imm] but not [i+r].
-    if (TLI.isLegalAddressingMode(AddrMode, AccessTy)) {
-      AddrMode.BaseReg = Addr;
+    if (TLI.isLegalAddressingMode(AddrMode, AccessTy))
       return true;
-    }
     AddrMode.HasBaseReg = false;
+    AddrMode.BaseReg = 0;
   }
 
   // If the base register is already taken, see if we can do [r+r].
   if (AddrMode.Scale == 0) {
     AddrMode.Scale = 1;
-    if (TLI.isLegalAddressingMode(AddrMode, AccessTy)) {
-      AddrMode.ScaledReg = Addr;
+    AddrMode.ScaledReg = Addr;
+    if (TLI.isLegalAddressingMode(AddrMode, AccessTy))
       return true;
-    }
     AddrMode.Scale = 0;
+    AddrMode.ScaledReg = 0;
   }
   // Couldn't match.
   return false;
@@ -954,7 +954,7 @@ cl::opt<bool> ENABLECRAZYHACK("enable-smarter-addr-folding", cl::Hidden);
 ///
 /// Note that this (like most of CodeGenPrepare) is just a rough heuristic.  If
 /// X was live across 'load Z' for other reasons, we actually *would* want to
-/// fold the addressing mode in the Z case.
+/// fold the addressing mode in the Z case.  This would make Y die earlier.
 bool AddressingModeMatcher::
 IsProfitableToFoldIntoAddressingMode(Instruction *I) {
   if (IgnoreProfitability || !ENABLECRAZYHACK) return true;