
This patch works towards consolidating all Clang debug-info into the `clang/test/DebugInfo` directory (https://discourse.llvm.org/t/clang-test-location-of-clang-debug-info-tests/87958). Here we move only the `clang/test/CodeGenCXX` tests. I created a `CXX` subdirectory for now because many of the tests I checked actually did seem C++-specific. There is probably overlap between the `Generic` and `CXX` subdirectory, but I haven't gone through and audited them all. The list of files i came up with is: 1. searched for anything with `*debug-info*` in the filename 2. searched for occurrences of `debug-info-kind` in the tests There's a couple of tests in `clang/test/CodeGenCXX` that still set `-debug-info-kind`. They probably don't need to do that, but I'm not changing that as part of this PR.
36 lines
890 B
C++
36 lines
890 B
C++
// RUN: %clangxx -target x86_64-unknown-unknown -g \
|
|
// RUN: %s -emit-llvm -S -o - | FileCheck %s
|
|
|
|
// RUN: %clangxx -target x86_64-unknown-unknown -g \
|
|
// RUN: -fno-elide-constructors %s -emit-llvm -S -o - | \
|
|
// RUN: FileCheck %s -check-prefix=NOELIDE
|
|
|
|
struct Foo {
|
|
Foo() = default;
|
|
Foo(Foo &&other) { x = other.x; }
|
|
int x;
|
|
};
|
|
void some_function(int);
|
|
Foo getFoo() {
|
|
Foo foo;
|
|
foo.x = 41;
|
|
some_function(foo.x);
|
|
return foo;
|
|
}
|
|
|
|
int main() {
|
|
Foo bar = getFoo();
|
|
return bar.x;
|
|
}
|
|
|
|
// Check that NRVO variables are stored as a pointer with deref if they are
|
|
// stored in the return register.
|
|
|
|
// CHECK: %[[RESULT:.*]] = alloca ptr, align 8
|
|
// CHECK: #dbg_declare(ptr %[[RESULT]],
|
|
// CHECK-SAME: !DIExpression(DW_OP_deref)
|
|
|
|
// NOELIDE: %[[FOO:.*]] = alloca %struct.Foo, align 4
|
|
// NOELIDE: #dbg_declare(ptr %[[FOO]],
|
|
// NOELIDE-SAME: !DIExpression()
|