From 103018e9d99f008bc5dbe956bc978342b26e3658 Mon Sep 17 00:00:00 2001 From: Vedant Kumar Date: Thu, 16 Aug 2018 23:05:15 +0000 Subject: [PATCH] Add a basic integration test for C++ smart pointers Check that the debugger can pretty-print unique_ptr and shared_ptr when passed as a function argument. rdar://42314305 llvm-svn: 339961 --- debuginfo-tests/smart-ptr-1.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 debuginfo-tests/smart-ptr-1.cpp diff --git a/debuginfo-tests/smart-ptr-1.cpp b/debuginfo-tests/smart-ptr-1.cpp new file mode 100644 index 0000000..3be26b9 --- /dev/null +++ b/debuginfo-tests/smart-ptr-1.cpp @@ -0,0 +1,41 @@ +// RUN: %clangxx -std=c++14 %target_itanium_abi_host_triple -g %s -o %t.O0.out +// RUN: %test_debuginfo %s %t.O0.out + +#include + +static volatile int sink; + +static void use_shared_ptr(std::shared_ptr ptr) { + // DEBUGGER: break 10 + sink = *ptr; +} + +static void use_unique_ptr(std::unique_ptr ptr) { + // DEBUGGER: break 15 + sink = *ptr; +} + +int main() { + auto sp_1 = std::make_shared(1234); + use_shared_ptr(sp_1); + + auto up_1 = std::make_unique(5678); + use_unique_ptr(std::move(up_1)); + + return 0; +} + +// DEBUGGER: r + +// (at line 10) +// DEBUGGER: p ptr +// CHECK: shared_ptr +// CHECK-SAME: 1234 + +// DEBUGGER: c + +// (at line 16) +// DEBUGGER: p ptr +// CHECK: unique_ptr +// TODO: lldb's unique_ptr data formatter doesn't pretty-print its wrapped +// object. -- 2.7.4