You've already forked llvm-project
mirror of
https://github.com/encounter/llvm-project.git
synced 2026-03-30 11:27:19 -07:00
9ca5c42582
-std=c++0x. Patch by Ahmed Charles! llvm-svn: 141900
43 lines
706 B
C++
43 lines
706 B
C++
// RUN: %clang_cc1 -std=c++11 %s -S -o - -emit-llvm | FileCheck %s
|
|
|
|
// PR10304: destructors should not call destructors for variant members.
|
|
|
|
template<bool b = false>
|
|
struct Foo {
|
|
Foo() { static_assert(b, "Foo::Foo used"); }
|
|
~Foo() { static_assert(b, "Foo::~Foo used"); }
|
|
};
|
|
|
|
struct Bar {
|
|
Bar();
|
|
~Bar();
|
|
};
|
|
|
|
union FooBar {
|
|
FooBar() {}
|
|
~FooBar() {}
|
|
Foo<> foo;
|
|
Bar bar;
|
|
};
|
|
|
|
struct Variant {
|
|
Variant() {}
|
|
~Variant() {}
|
|
union {
|
|
Foo<> foo;
|
|
Bar bar;
|
|
};
|
|
};
|
|
|
|
FooBar foobar;
|
|
Variant variant;
|
|
|
|
// The ctor and dtor of Foo<> and Bar should not be mentioned in the resulting
|
|
// code.
|
|
//
|
|
// CHECK-NOT: 3FooILb1EEC1
|
|
// CHECK-NOT: 3BarC1
|
|
//
|
|
// CHECK-NOT: 3FooILb1EED1
|
|
// CHECK-NOT: 3BarD1
|