Mercurial > hg > CbC > CbC_llvm
comparison clang/test/CodeGenCXX/union-dtor.cpp @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 // RUN: %clang_cc1 -std=c++11 %s -S -o - -emit-llvm | FileCheck %s | |
2 | |
3 // PR10304: destructors should not call destructors for variant members. | |
4 | |
5 template<bool b = false> | |
6 struct Foo { | |
7 Foo() { static_assert(b, "Foo::Foo used"); } | |
8 ~Foo() { static_assert(b, "Foo::~Foo used"); } | |
9 }; | |
10 | |
11 struct Bar { | |
12 Bar(); | |
13 ~Bar(); | |
14 }; | |
15 | |
16 union FooBar { | |
17 FooBar() {} | |
18 ~FooBar() {} | |
19 Foo<> foo; | |
20 Bar bar; | |
21 }; | |
22 | |
23 struct Variant { | |
24 Variant() {} | |
25 ~Variant() {} | |
26 union { | |
27 Foo<> foo; | |
28 Bar bar; | |
29 }; | |
30 }; | |
31 | |
32 FooBar foobar; | |
33 Variant variant; | |
34 | |
35 // The ctor and dtor of Foo<> and Bar should not be mentioned in the resulting | |
36 // code. | |
37 // | |
38 // CHECK-NOT: 3FooILb1EEC1 | |
39 // CHECK-NOT: 3BarC1 | |
40 // | |
41 // CHECK-NOT: 3FooILb1EED1 | |
42 // CHECK-NOT: 3BarD1 |