Seems a much more principled solution yes. On Fri, Apr 29, 2016, 9:19 AM Hal Finkel <hfin...@anl.gov> wrote:
> hfinkel updated this revision to Diff 55610. > hfinkel added a comment. > > Use David's suggested approach: Modify the preferred expression location > for member calls. If the callee has a valid location (not all do), then use > that. Otherwise, fall back to the starting location. This seems to cleanly > fix the debug-info problem. > > > http://reviews.llvm.org/D19708 > > Files: > include/clang/AST/ExprCXX.h > test/CodeGenCXX/debug-info-member-call.cpp > > Index: test/CodeGenCXX/debug-info-member-call.cpp > =================================================================== > --- /dev/null > +++ test/CodeGenCXX/debug-info-member-call.cpp > @@ -0,0 +1,24 @@ > +// RUN: %clang_cc1 -triple x86_64-unknown_unknown -emit-llvm > -debug-info-kind=standalone -dwarf-column-info %s -o - | FileCheck %s > +void ext(); > + > +struct Bar { > + void bar() { ext(); } > +}; > + > +struct Foo { > + Bar *b; > + > + Bar *foo() { return b; } > +}; > + > +void test(Foo *f) { > + f->foo()->bar(); > +} > + > +// CHECK-LABEL: @_Z4testP3Foo > +// CHECK: call {{.*}} @_ZN3Foo3fooEv{{.*}}, !dbg ![[CALL1LOC:.*]] > +// CHECK: call void @_ZN3Bar3barEv{{.*}}, !dbg ![[CALL2LOC:.*]] > + > +// CHECK: ![[CALL1LOC]] = !DILocation(line: [[LINE:[0-9]+]], column: 6, > +// CHECK: ![[CALL2LOC]] = !DILocation(line: [[LINE]], column: 13, > + > Index: include/clang/AST/ExprCXX.h > =================================================================== > --- include/clang/AST/ExprCXX.h > +++ include/clang/AST/ExprCXX.h > @@ -145,6 +145,14 @@ > /// FIXME: Returns 0 for member pointer call exprs. > CXXRecordDecl *getRecordDecl() const; > > + SourceLocation getExprLoc() const LLVM_READONLY { > + SourceLocation CLoc = getCallee()->getExprLoc(); > + if (CLoc.isValid()) > + return CLoc; > + > + return getLocStart(); > + } > + > static bool classof(const Stmt *T) { > return T->getStmtClass() == CXXMemberCallExprClass; > } > > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits