While lowering dbg_declare, emit DBG_VALUE machine instruction if alloca matching...
authorDevang Patel <dpatel@apple.com>
Wed, 28 Apr 2010 19:27:33 +0000 (19:27 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 28 Apr 2010 19:27:33 +0000 (19:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102513 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/FastISel.cpp

index 8aa37a06dc2f3e403d0d418fff1e60ecd0e7da08..49bfbffa623c13bc56418f98b1c7a75e4e96949c 100644 (file)
@@ -342,17 +342,17 @@ bool FastISel::SelectCall(const User *I) {
     // Don't handle byval struct arguments or VLAs, for example.
     // Note that if we have a byval struct argument, fast ISel is turned off;
     // those are handled in SelectionDAGBuilder.
-    if (!AI) break;
-    DenseMap<const AllocaInst*, int>::iterator SI =
-      StaticAllocaMap.find(AI);
-    if (SI == StaticAllocaMap.end()) break; // VLAs.
-    int FI = SI->second;
-    if (!DI->getDebugLoc().isUnknown())
-      MF.getMMI().setVariableDbgInfo(DI->getVariable(), FI, DI->getDebugLoc());
-
-    // Building the map above is target independent.  Generating DBG_VALUE
-    // inline is target dependent; do this now.
-    (void)TargetSelectInstruction(cast<Instruction>(I));
+    if (AI) {
+      DenseMap<const AllocaInst*, int>::iterator SI =
+        StaticAllocaMap.find(AI);
+      if (SI == StaticAllocaMap.end()) break; // VLAs.
+      int FI = SI->second;
+      if (!DI->getDebugLoc().isUnknown())
+        MF.getMMI().setVariableDbgInfo(DI->getVariable(), FI, DI->getDebugLoc());
+    } else
+      // Building the map above is target independent.  Generating DBG_VALUE
+      // inline is target dependent; do this now.
+      (void)TargetSelectInstruction(cast<Instruction>(I));
     return true;
   }
   case Intrinsic::dbg_value: {