If location where the function was inlined is not know then do not emit debug info...
authorDevang Patel <dpatel@apple.com>
Thu, 16 Apr 2009 01:31:54 +0000 (01:31 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 16 Apr 2009 01:31:54 +0000 (01:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69252 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/FastISel.cpp

index 71092c1d612c94818bc0be16e0705fb2f93a4ce8..ef7250f944ceedd0742c60c028e848972e5c11a4 100644 (file)
@@ -387,12 +387,14 @@ bool FastISel::SelectCall(User *I) {
       unsigned SrcFile = DW->getOrCreateSourceID(CompileUnit.getDirectory(Dir),
                                                  CompileUnit.getFilename(FN));
 
-      // Record the source line.
-      unsigned Line = Subprogram.getLineNumber();
-      unsigned LabelID = DW->RecordSourceLine(Line, 0, SrcFile);
-      setCurDebugLoc(DebugLoc::get(MF.getOrCreateDebugLocID(SrcFile, Line, 0)));
-      if (!Subprogram.describes(MF.getFunction())) {
+      if (!Subprogram.describes(MF.getFunction()) && !PrevLoc.isUnknown()) {
         // This is a beginning of an inlined function.
+        
+        // Record the source line.
+        unsigned Line = Subprogram.getLineNumber();
+        unsigned LabelID = DW->RecordSourceLine(Line, 0, SrcFile);
+        setCurDebugLoc(DebugLoc::get(MF.getOrCreateDebugLocID(SrcFile, Line, 0)));
+
         const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);
         BuildMI(MBB, DL, II).addImm(LabelID);
         DebugLocTuple PrevLocTpl = MF.getDebugLocTuple(PrevLoc);
@@ -401,6 +403,10 @@ bool FastISel::SelectCall(User *I) {
                                  PrevLocTpl.Line,
                                  PrevLocTpl.Col);
       } else {
+        // Record the source line.
+        unsigned Line = Subprogram.getLineNumber();
+        setCurDebugLoc(DebugLoc::get(MF.getOrCreateDebugLocID(SrcFile, Line, 0)));
+        
         // llvm.dbg.func_start also defines beginning of function scope.
         DW->RecordRegionStart(cast<GlobalVariable>(FSI->getSubprogram()));
       }