Emit label for llvm.dbg.func.start of the inlined function.
authorDevang Patel <dpatel@apple.com>
Thu, 6 Nov 2008 21:28:20 +0000 (21:28 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 6 Nov 2008 21:28:20 +0000 (21:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58814 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/FastISel.cpp
test/DebugInfo/2008-11-05-InlinedFuncStart.ll

index 404d613ac883371abda0eb8c21623f676724130d..b45a4fd53696305380b3d0adc4d929824d40716d 100644 (file)
@@ -349,9 +349,14 @@ bool FastISel::SelectCall(User *I) {
       SubprogramDesc *Subprogram = cast<SubprogramDesc>(DD);
       const CompileUnitDesc *CompileUnit = Subprogram->getFile();
       unsigned SrcFile = MMI->RecordSource(CompileUnit);
-      // Record the source line but does create a label. It will be emitted
-      // at asm emission time.
-      MMI->RecordSourceLine(Subprogram->getLine(), 0, SrcFile);
+      // Record the source line but does not create a label for the normal
+      // function start. It will be emitted at asm emission time. However,
+      // create a label if this is a beginning of inlined function.
+      unsigned LabelID = MMI->RecordSourceLine(Subprogram->getLine(), 0, SrcFile);
+      if (MMI->getSourceLines().size() != 1) {
+        const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);
+        BuildMI(MBB, II).addImm(LabelID);
+      }
     }
     return true;
   }
index 5df872462cc6734c1c55302f70c2bdf15a6458b7..a35a88ebd6b5073531c83c68c9a9973c5b312bed 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llvm-as < %s | llc
+; RUN: llvm-as < %s | llc -fast
        %llvm.dbg.anchor.type = type { i32, i32 }
        %llvm.dbg.basictype.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, i32 }
        %llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8* }