Jonas Devlieghere f9acb06ce4
[debuginfo-tests] Update line numbers in llgdb-tests/nrvo-string.cpp (#188901)
Update the line numbers in llgdb-tests/nrvo-string.cpp for #188780 which
shifts the file by 6 lines.
2026-03-27 03:28:00 +00:00

59 lines
1.3 KiB
C++

// REQUIRES: system-darwin || has-gdb
//
// This ensures that DW_OP_deref is inserted when necessary, such as when NRVO
// of a string object occurs in C++.
//
// RUN: %clangxx -O0 -fno-exceptions %target_itanium_abi_host_triple %s \
// RUN: -o %t.out -g
// RUN: %test_debuginfo %s %t.out
// RUN: %clangxx -O1 -fno-exceptions %target_itanium_abi_host_triple %s \
// RUN: -o %t.out -g
// RUN: %test_debuginfo %s %t.out
// XFAIL: !system-darwin && gdb-clang-incompatibility
// PR34513
volatile int sideeffect = 0;
void __attribute__((noinline)) stop() { sideeffect++; }
struct string {
string() {}
string(int i) : i(i) {}
~string() {}
int i = 0;
};
string __attribute__((noinline)) get_string() {
string unused;
string result = 3;
// DEBUGGER: break 29
stop();
return result;
}
void some_function(int) {}
struct string2 {
string2() = default;
string2(string2 &&other) { i = other.i; }
int i;
};
string2 __attribute__((noinline)) get_string2() {
string2 result;
result.i = 5;
some_function(result.i);
// Test that the debugger can get the value of result after another
// function is called.
// DEBUGGER: break 45
stop();
return result;
}
int main() {
get_string();
get_string2();
}
// DEBUGGER: r
// DEBUGGER: print result.i
// CHECK: = 3
// DEBUGGER: c
// DEBUGGER: print result.i
// CHECK: = 5