Reapply r118917. With pseudo-instruction expansion moved to
authorDan Gohman <gohman@apple.com>
Tue, 16 Nov 2010 22:43:23 +0000 (22:43 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 16 Nov 2010 22:43:23 +0000 (22:43 +0000)
a different pass, the complicated interaction between cmov expansion
and fast isel is no longer a concern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119400 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86FastISel.cpp

index b938539a7f45243778b7c06ff000709cb8895a63..ee6643336fd4f092c0126a72faec4af8959bb486 100644 (file)
@@ -320,11 +320,11 @@ bool X86FastISel::X86SelectAddress(const Value *V, X86AddressMode &AM) {
     // Don't walk into other basic blocks; it's possible we haven't
     // visited them yet, so the instructions may not yet be assigned
     // virtual registers.
-    if (FuncInfo.MBBMap[I->getParent()] != FuncInfo.MBB)
-      return false;
-
-    Opcode = I->getOpcode();
-    U = I;
+    if (FuncInfo.StaticAllocaMap.count(static_cast<const AllocaInst *>(V)) ||
+        FuncInfo.MBBMap[I->getParent()] == FuncInfo.MBB) {
+      Opcode = I->getOpcode();
+      U = I;
+    }
   } else if (const ConstantExpr *C = dyn_cast<ConstantExpr>(V)) {
     Opcode = C->getOpcode();
     U = C;