Michael Buch f2aedc21f9
[clang][DebugInfo][test] Move debug-info tests from CodeGenCXX to DebugInfo directory (#154538)
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.
2025-08-21 09:26:08 +01:00

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()