mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 02:16:07 +00:00

This patch is breaking `dr` to `cwg` equivalence in our terminology, making room for tests for LWG issues that concern compiler intrinsics.
42 lines
2.1 KiB
C++
42 lines
2.1 KiB
C++
// RUN: %clang_cc1 -std=c++98 %s -triple x86_64-linux-gnu -emit-llvm -disable-llvm-passes -o - -fexceptions -fcxx-exceptions -pedantic-errors | llvm-cxxfilt -n | FileCheck %s --check-prefixes CHECK
|
|
// RUN: %clang_cc1 -std=c++11 %s -triple x86_64-linux-gnu -emit-llvm -disable-llvm-passes -o - -fexceptions -fcxx-exceptions -pedantic-errors | llvm-cxxfilt -n | FileCheck %s --check-prefixes CHECK
|
|
// RUN: %clang_cc1 -std=c++14 %s -triple x86_64-linux-gnu -emit-llvm -disable-llvm-passes -o - -fexceptions -fcxx-exceptions -pedantic-errors | llvm-cxxfilt -n | FileCheck %s --check-prefixes CHECK
|
|
// RUN: %clang_cc1 -std=c++17 %s -triple x86_64-linux-gnu -emit-llvm -disable-llvm-passes -o - -fexceptions -fcxx-exceptions -pedantic-errors | llvm-cxxfilt -n | FileCheck %s --check-prefixes CHECK
|
|
// RUN: %clang_cc1 -std=c++20 %s -triple x86_64-linux-gnu -emit-llvm -disable-llvm-passes -o - -fexceptions -fcxx-exceptions -pedantic-errors | llvm-cxxfilt -n | FileCheck %s --check-prefixes CHECK
|
|
// RUN: %clang_cc1 -std=c++23 %s -triple x86_64-linux-gnu -emit-llvm -disable-llvm-passes -o - -fexceptions -fcxx-exceptions -pedantic-errors | llvm-cxxfilt -n | FileCheck %s --check-prefixes CHECK
|
|
// RUN: %clang_cc1 -std=c++2c %s -triple x86_64-linux-gnu -emit-llvm -disable-llvm-passes -o - -fexceptions -fcxx-exceptions -pedantic-errors | llvm-cxxfilt -n | FileCheck %s --check-prefixes CHECK
|
|
|
|
#if __cplusplus == 199711L
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Wvariadic-macros"
|
|
#define static_assert(...) __extension__ _Static_assert(__VA_ARGS__)
|
|
#pragma clang diagnostic pop
|
|
#endif
|
|
|
|
namespace cwg210 { // cwg210: 2.7
|
|
struct B {
|
|
long i;
|
|
B();
|
|
virtual ~B();
|
|
};
|
|
|
|
static_assert(sizeof(B) == 16, "");
|
|
|
|
struct D : B {
|
|
long j;
|
|
D();
|
|
};
|
|
|
|
static_assert(sizeof(D) == 24, "");
|
|
|
|
void toss(const B* b) {
|
|
throw *b;
|
|
}
|
|
|
|
// CHECK-LABEL: define {{.*}} void @cwg210::toss(cwg210::B const*)
|
|
// CHECK: %[[EXCEPTION:.*]] = call ptr @__cxa_allocate_exception(i64 16)
|
|
// CHECK: call void @__cxa_throw(ptr %[[EXCEPTION]], ptr @typeinfo for cwg210::B, ptr @cwg210::B::~B())
|
|
// CHECK-LABEL: }
|
|
|
|
} // namespace cwg210
|