Richard Smith | b130fe7 | 2016-06-23 19:16:49 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -std=c++1z %s -emit-llvm -o - | FileCheck %s --implicit-check-not=should_not_be_used |
| 2 | |
| 3 | void should_be_used_1(); |
| 4 | void should_be_used_2(); |
Ismail Pazarbasi | 4a00774 | 2016-09-07 18:24:54 +0000 | [diff] [blame] | 5 | void should_be_used_3(); |
Richard Smith | b130fe7 | 2016-06-23 19:16:49 +0000 | [diff] [blame] | 6 | void should_not_be_used(); |
Ismail Pazarbasi | 4a00774 | 2016-09-07 18:24:54 +0000 | [diff] [blame] | 7 | |
| 8 | struct A { |
| 9 | constexpr explicit operator bool() const { |
| 10 | return true; |
| 11 | } |
| 12 | }; |
| 13 | |
Richard Smith | b130fe7 | 2016-06-23 19:16:49 +0000 | [diff] [blame] | 14 | void f() { |
| 15 | if constexpr (false) |
| 16 | should_not_be_used(); |
| 17 | else |
| 18 | should_be_used_1(); |
| 19 | |
| 20 | if constexpr (true || ({ label: false; })) |
| 21 | should_be_used_2(); |
| 22 | else { |
| 23 | goto foo; |
| 24 | foo: should_not_be_used(); |
| 25 | } |
Ismail Pazarbasi | 4a00774 | 2016-09-07 18:24:54 +0000 | [diff] [blame] | 26 | if constexpr (A()) |
| 27 | should_be_used_3(); |
| 28 | else |
| 29 | should_not_be_used(); |
Richard Smith | b130fe7 | 2016-06-23 19:16:49 +0000 | [diff] [blame] | 30 | } |
| 31 | |
| 32 | // CHECK: should_be_used_1 |
| 33 | // CHECK: should_be_used_2 |
Ismail Pazarbasi | 4a00774 | 2016-09-07 18:24:54 +0000 | [diff] [blame] | 34 | // CHECK: should_be_used_3 |