File tree Expand file tree Collapse file tree 3 files changed +43
-3
lines changed Expand file tree Collapse file tree 3 files changed +43
-3
lines changed Original file line number Diff line number Diff line change
1
+ // 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
2
+ // 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
3
+ // 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
4
+ // 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
5
+ // 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
6
+ // 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
7
+ // 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
8
+
9
+ #if __cplusplus == 199711L
10
+ #define NOTHROW throw ()
11
+ #else
12
+ #define NOTHROW noexcept (true )
13
+ #endif
14
+
15
+ namespace dr392 { // dr392: 2.8
16
+
17
+ struct A {
18
+ operator bool () NOTHROW;
19
+ };
20
+
21
+ class C {
22
+ public:
23
+ C () NOTHROW;
24
+ ~C () NOTHROW;
25
+ A& get () NOTHROW { return p; }
26
+ private:
27
+ A p;
28
+ };
29
+
30
+ void f ()
31
+ {
32
+ if (C ().get ()) {}
33
+ }
34
+
35
+ } // namespace dr392
36
+
37
+ // CHECK-LABEL: define {{.*}} void @dr392::f()()
38
+ // CHECK: call {{.*}} i1 @dr392::A::operator bool()
39
+ // CHECK: call void @dr392::C::~C()
40
+ // CHECK-LABEL: }
Original file line number Diff line number Diff line change @@ -1401,7 +1401,7 @@ namespace dr387 { // dr387: 2.8
1401
1401
}
1402
1402
}
1403
1403
1404
- // FIXME: dr388 needs codegen test
1404
+ // FIXME: dr388 needs libc++abi test
1405
1405
1406
1406
namespace dr389 { // dr389: no
1407
1407
struct S {
@@ -1567,7 +1567,7 @@ namespace dr391 { // dr391: 2.8 c++11
1567
1567
const C<int > &c = fc();
1568
1568
}
1569
1569
1570
- // dr392 FIXME write codegen test
1570
+ // dr392 is in dr392.cpp
1571
1571
// dr394: na
1572
1572
1573
1573
namespace dr395 { // dr395: 3.0
Original file line number Diff line number Diff line change @@ -2392,7 +2392,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
2392
2392
<td><a href="https://cplusplus.github.io/CWG/issues/392.html">392</a></td>
2393
2393
<td>CD1</td>
2394
2394
<td>Use of full expression lvalue before temporary destruction</td>
2395
- <td class="unknown " align="center">Unknown </td>
2395
+ <td class="full " align="center">Clang 2.8 </td>
2396
2396
</tr>
2397
2397
<tr id="393">
2398
2398
<td><a href="https://cplusplus.github.io/CWG/issues/393.html">393</a></td>
You can’t perform that action at this time.
0 commit comments