[LLVMbugs] [Bug 12323] New: Incorrect line numbers in debug information when building with inlining

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Mar 21 10:05:19 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=12323

             Bug #: 12323
           Summary: Incorrect line numbers in debug information when
                    building with inlining
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Headers
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: nicolasweber at gmx.de
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 8248
  --> http://llvm.org/bugs/attachment.cgi?id=8248
repro

The attached (zipped) ii file contains this code:

  if (!SupplementaryBranding::GetBrand().empty()) {
    if (SupplementaryBranding::GetBrand() != product_brand) {
      ASSERT_STRING("FinancialPing::FormRequest: supplementary branding bad");
      return false;
    }
  }

When stepping through it, gdb complains:

  Line number 664 out of range; ../../rlz/lib/financial_ping.cc has 373 lines.



Compile the file:
  clang -O3 -gdwarf-2 -fvisibility=hidden -arch i386  \
    -fno-rtti -fno-exceptions -fvisibility-inlines-hidden \
    -c ~/repro.ii  -Wno-c++11-extensions

Then look at the debug information:
  dwarfdump repro.o | mvim -

It contains:

0x000284ee:                 TAG_inlined_subroutine [101] *
                             AT_abstract_origin( {0x00005110} (
"_ZNKSs5emptyEv" ) )
                             AT_low_pc( 0x000000ad )
                             AT_high_pc( 0x000000bb )
                             AT_call_file( "/Users/thakis/repro.ii" )
                             AT_call_line( 113 )

0x000284fd:                     TAG_inlined_subroutine [102] *
                                 AT_abstract_origin( {0x000050f8} (
"_ZNKSs4sizeEv" ) )
                                 AT_low_pc( 0x000000ad )
                                 AT_high_pc( 0x000000bb )
                                 AT_call_file( "/Users/thakis/repro.ii" )
                                 AT_call_line( 664 )

^ Note the 664 here, which is the line where "size()" is defined for strings
(which probably has been inlined). Instead, it should have the line number of
where size() is called (113).

(In the normal case, where the input isn't a single .ii file, the AT_call_file
entry correctly points to "../../rlz/lib/financial_ping.cc")








clang --versionclang version 3.1 (trunk 152598)
Target: x86_64-apple-darwin10.8.0
Thread model: posix

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list