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(); |
5 | void should_be_used_3(); |
6 | void should_not_be_used(); |
7 | |
8 | struct A { |
9 | constexpr explicit operator bool() const { |
10 | return true; |
11 | } |
12 | }; |
13 | |
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 | } |
26 | if constexpr (A()) |
27 | should_be_used_3(); |
28 | else |
29 | should_not_be_used(); |
30 | } |
31 | |
32 | // CHECK: should_be_used_1 |
33 | // CHECK: should_be_used_2 |
34 | // CHECK: should_be_used_3 |
35 | |