mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 06:46:07 +00:00

Since C++14 has been released for about nine years and most standard libraries have implemented sized deallocation functions, it's time to make this feature default again. This is another try of https://reviews.llvm.org/D112921. The original commit cf5a8b4 was reverted by 2e5035a due to some failures (see #83774). Fixes #60061
32 lines
2.0 KiB
C++
32 lines
2.0 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,CXX98-11
|
|
// 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,CXX98-11
|
|
// 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,SINCE-CXX14
|
|
// 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,SINCE-CXX14
|
|
// 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,SINCE-CXX14
|
|
// 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,SINCE-CXX14
|
|
// 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,SINCE-CXX14
|
|
|
|
namespace cwg292 { // cwg292: 2.9
|
|
|
|
extern int g();
|
|
|
|
struct A {
|
|
A(int) throw() {}
|
|
};
|
|
|
|
void f() {
|
|
new A(g());
|
|
}
|
|
|
|
// CHECK-LABEL: define {{.*}} void @cwg292::f()()
|
|
// CHECK: %[[CALL:.+]] = call {{.*}} @operator new(unsigned long)({{.*}})
|
|
// CHECK: invoke {{.*}} i32 @cwg292::g()()
|
|
// CHECK-NEXT: to {{.*}} unwind label %lpad
|
|
// CHECK-LABEL: lpad:
|
|
// CXX98-11: call void @operator delete(void*)(ptr {{.*}} %[[CALL]])
|
|
// SINCE-CXX14: call void @operator delete(void*, unsigned long)(ptr {{.*}} %[[CALL]], i64 noundef 1)
|
|
// CHECK-LABEL: eh.resume:
|
|
// CHECK-LABEL: }
|
|
|
|
} // namespace cwg292
|