https://llvm.org/bugs/show_bug.cgi?id=27567
Bug ID: 27567 Summary: Member expressions have wrong debug column information Product: clang Version: unspecified Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P Component: LLVM Codegen Assignee: unassignedclangb...@nondot.org Reporter: hfin...@anl.gov CC: llvm-bugs@lists.llvm.org Classification: Unclassified Consider the following: $ cat -n /tmp/i.cpp 1 void ext(); 2 3 struct Bar { 4 void bar() { ext(); } 5 }; 6 7 struct Foo { 8 Bar *b; 9 10 Bar *foo() { return b; } 11 }; 12 13 void test(Foo *f) { 14 f->foo()->bar(); 15 } 16 Running: $ clang -g /tmp/i.cpp -S -emit-llvm -o - we see... define void @_Z4testP3Foo(%struct.Foo* %f) #0 !dbg !6 { ... %call = call %struct.Bar* @_ZN3Foo3fooEv(%struct.Foo* %0), !dbg !27 call void @_ZN3Bar3barEv(%struct.Bar* %call), !dbg !28 ... !27 = !DILocation(line: 14, column: 3, scope: !6) !28 = !DILocation(line: 14, column: 3, scope: !29) so the two call instructions both point to the 'f' in 'f->foo()->bar()', not to the calls to 'foo()' and 'bar()' themselves. Running: $ clang -g /tmp/i.cpp -S -emit-llvm -o - -Xclang -ast-dump we see... `-FunctionDecl 0x5ce7cd0 <line:13:1, line:15:1> line:13:6 test 'void (struct Foo *)' |-ParmVarDecl 0x5ce7c08 <col:11, col:16> col:16 used f 'struct Foo *' `-CompoundStmt 0x5ce7e80 <col:19, line:15:1> `-CXXMemberCallExpr 0x5ce7e58 <line:14:3, col:17> 'void' `-MemberExpr 0x5ce7e20 <col:3, col:13> '<bound member function type>' ->bar 0x5ce7640 `-CXXMemberCallExpr 0x5ce7df8 <col:3, col:10> 'struct Bar *' `-MemberExpr 0x5ce7dc0 <col:3, col:6> '<bound member function type>' ->foo 0x5ce7a80 `-ImplicitCastExpr 0x5ce7da8 <col:3> 'struct Foo *' <LValueToRValue> `-DeclRefExpr 0x5ce7d80 <col:3> 'struct Foo *' lvalue ParmVar 0x5ce7c08 'f' 'struct Foo *' So the correct column numbers, 6 and 13, are the second location in the MemberExpr nodes, not the first. Those second locations should end up in the debug info. -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs