diff options
author | Reid Kleckner <rnk@google.com> | 2017-09-15 21:59:39 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2017-09-15 21:59:39 +0000 |
commit | 496ecab2ba91370b5189c046497cda485883f287 (patch) | |
tree | 58e21e0cb8a817d288a7b70861d903c62bb6360f /debuginfo-tests/nrvo-string.cpp | |
parent | 3a66c1cb58a955d9f24f4bc2a86ce80bfc76dee6 (diff) | |
download | llvm-496ecab2ba91370b5189c046497cda485883f287.zip llvm-496ecab2ba91370b5189c046497cda485883f287.tar.gz llvm-496ecab2ba91370b5189c046497cda485883f287.tar.bz2 |
[debuginfo-tests] Add string NRVO test for PR34513
It should pass in -O0 and -O1 after r313400 and r313399.
llvm-svn: 313401
Diffstat (limited to 'debuginfo-tests/nrvo-string.cpp')
-rw-r--r-- | debuginfo-tests/nrvo-string.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/debuginfo-tests/nrvo-string.cpp b/debuginfo-tests/nrvo-string.cpp new file mode 100644 index 0000000..18acebb --- /dev/null +++ b/debuginfo-tests/nrvo-string.cpp @@ -0,0 +1,27 @@ +// 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 -o %t.out -g +// RUN: %test_debuginfo %s %t.out +// RUN: %clangxx -O1 -fno-exceptions %target_itanium_abi_host_triple %s -o %t.out -g +// RUN: %test_debuginfo %s %t.out +// +// PR34513 + +struct string { + string() {} + string(int i) : i(i) {} + ~string() {} + int i = 0; +}; +string get_string() { + string unused; + string result = 3; +// DEBUGGER: break 21 + return result; +} +int main() { get_string(); } + +// DEBUGGER: r +// DEBUGGER: print result.i +// CHECK: = 3 |