]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenCXX/cxx1z-constexpr-if.cpp
Vendor import of clang trunk r290819:
[FreeBSD/FreeBSD.git] / test / CodeGenCXX / cxx1z-constexpr-if.cpp
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