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