Files
llvm-project/clang/test/CodeGenCXX/debug-info-member-call.cpp
Hal Finkel ec264b2935 [CGDebugInfo] 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 makes sure that the debug info for calls
points to the call (not the start of the expression providing the object on
which the member function is being called).

For example, given this:

  f->foo()->bar();

we don't want both calls to point to the 'f', but rather to the 'foo()' and
the 'bar()'.

Fixes PR27567.

Differential Revision: http://reviews.llvm.org/D19708

llvm-svn: 270775
2016-05-25 22:08:27 +00:00

25 lines
582 B
C++

// 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,