• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {
operator boolA9   constexpr explicit operator bool() const {
10     return true;
11   }
12 };
13 
f()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