blob: 14695363b331c03c3725a110816683f431fd66a1 [file] [log] [blame]
Richard Smithb130fe72016-06-23 19:16:49 +00001// RUN: %clang_cc1 -std=c++1z %s -emit-llvm -o - | FileCheck %s --implicit-check-not=should_not_be_used
2
3void should_be_used_1();
4void should_be_used_2();
Ismail Pazarbasi4a007742016-09-07 18:24:54 +00005void should_be_used_3();
Richard Smithb130fe72016-06-23 19:16:49 +00006void should_not_be_used();
Ismail Pazarbasi4a007742016-09-07 18:24:54 +00007
8struct A {
9 constexpr explicit operator bool() const {
10 return true;
11 }
12};
13
Richard Smithb130fe72016-06-23 19:16:49 +000014void 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;
24foo: should_not_be_used();
25 }
Ismail Pazarbasi4a007742016-09-07 18:24:54 +000026 if constexpr (A())
27 should_be_used_3();
28 else
29 should_not_be_used();
Richard Smithb130fe72016-06-23 19:16:49 +000030}
31
32// CHECK: should_be_used_1
33// CHECK: should_be_used_2
Ismail Pazarbasi4a007742016-09-07 18:24:54 +000034// CHECK: should_be_used_3