================
@@ -0,0 +1,31 @@
+// RUN: %clang_cc1 -std=c++98 %s -triple x86_64-linux-gnu -emit-llvm -o -
-fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s --check-prefixes
CHECK
+// RUN: %clang_cc1 -std=c++11 %s -triple x86_64-linux-gnu -emit-llvm -o -
-fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s --check-prefixes
CHECK
+// RUN: %clang_cc1 -std=c++14 %s -triple x86_64-linux-gnu -emit-llvm -o -
-fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s --check-prefixes
CHECK
+// RUN: %clang_cc1 -std=c++17 %s -triple x86_64-linux-gnu -emit-llvm -o -
-fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s --check-prefixes
CHECK
+// RUN: %clang_cc1 -std=c++20 %s -triple x86_64-linux-gnu -emit-llvm -o -
-fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s --check-prefixes
CHECK
+// RUN: %clang_cc1 -std=c++23 %s -triple x86_64-linux-gnu -emit-llvm -o -
-fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s --check-prefixes
CHECK
+// RUN: %clang_cc1 -std=c++2c %s -triple x86_64-linux-gnu -emit-llvm -o -
-fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s --check-prefixes
CHECK
+
+namespace cwg6 { // cwg6: yes
+
+struct A {
+ A();
+ A(const A&);
+ ~A();
+};
+
+inline void f(A a) {}
+
+// CHECK-LABEL: define {{.*}} @_ZN4cwg64callEv
+void call() {
+ A a;
+ // We copy the parameter here, even though object is not mutated by f and
+ // otherwise satisfies the criteria for the proposed CWG6 optimization.
+ // CHECK: {{call|invoke}} {{.*}} @_ZN4cwg61AC1ERKS0_
+ // CHECK: {{call|invoke}} {{.*}} @_ZN4cwg61fE
+ f(a);
+ // CHECK: {{call|invoke}} {{.*}} @_ZN4cwg61AD1Ev
+ // CHECK: {{call|invoke}} {{.*}} @_ZN4cwg61AD1Ev
----------------
zygoloid wrote:
Unfortunately that doesn't work directly. Because destructors aren't
non-throwing in C++98, the first call is actually a `call` not an `invoke` in
C++98. I've marked all these functions as non-throwing instead, to avoid the
test noise from exception handling.
https://github.com/llvm/llvm-project/pull/165633
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits