summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/missing-bind-temporary.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2019-08-28 18:44:42 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2019-08-28 18:44:42 +0000
commitead98ea3eb4e207be7ca003b612b68b7dfbb8f7e (patch)
tree5c646f192bc8620036c4a7b20f27d038597aab6a /clang/test/Analysis/missing-bind-temporary.cpp
parent630f7daf80fe36d3aa4a9ebe60e7abefae514bba (diff)
downloadbcm5719-llvm-ead98ea3eb4e207be7ca003b612b68b7dfbb8f7e.tar.gz
bcm5719-llvm-ead98ea3eb4e207be7ca003b612b68b7dfbb8f7e.zip
[CFG] Make representation of destructor calls more accurate.
Respect C++17 copy elision; previously it would generate destructor calls for elided temporaries, including in initialization and return statements. Don't generate duplicate destructor calls for statement expressions. Fix destructors in initialization lists and comma operators. Improve printing of implicit destructors. Patch by Nicholas Allegra! Differential Revision: https://reviews.llvm.org/D66404 llvm-svn: 370247
Diffstat (limited to 'clang/test/Analysis/missing-bind-temporary.cpp')
-rw-r--r--clang/test/Analysis/missing-bind-temporary.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/test/Analysis/missing-bind-temporary.cpp b/clang/test/Analysis/missing-bind-temporary.cpp
index 7be4e2ddf30..18204929bcb 100644
--- a/clang/test/Analysis/missing-bind-temporary.cpp
+++ b/clang/test/Analysis/missing-bind-temporary.cpp
@@ -31,7 +31,7 @@ class B {
// CHECK-NEXT: 8: [B1.7]
// CHECK-NEXT: 9: [B1.5] = [B1.8] (OperatorCall)
// CHECK-NEXT: 10: ~variant_0::B() (Temporary object destructor)
-// CHECK-NEXT: 11: [B1.2].~B() (Implicit destructor)
+// CHECK-NEXT: 11: [B1.2].~variant_0::B() (Implicit destructor)
void foo(int) {
B i;
i = {};
@@ -71,7 +71,7 @@ class B {
// CHECK-NEXT: 6: {} (CXXConstructExpr, class variant_1::B)
// CHECK-NEXT: 7: [B1.6]
// CHECK-NEXT: 8: [B1.5] = [B1.7] (OperatorCall)
-// CHECK-NEXT: 9: [B1.2].~B() (Implicit destructor)
+// CHECK-NEXT: 9: [B1.2].~variant_1::B() (Implicit destructor)
template <typename T> void foo(T) {
B i;
i = {};
@@ -114,7 +114,7 @@ public:
// CHECK-NEXT: 9: [B1.8]
// CHECK-NEXT: 10: [B1.5] = [B1.9] (OperatorCall)
// CHECK-NEXT: 11: ~variant_2::B() (Temporary object destructor)
-// CHECK-NEXT: 12: [B1.2].~B() (Implicit destructor)
+// CHECK-NEXT: 12: [B1.2].~variant_2::B() (Implicit destructor)
template <typename T> void foo(T) {
B i;
i = {};
OpenPOWER on IntegriCloud