1*b06305e4SDávid Bolvanský // RUN: %clang_cc1 -std=c++2a -fsyntax-only -verify %s 2*b06305e4SDávid Bolvanský 3*b06305e4SDávid Bolvanský namespace std { is_constant_evaluated()4*b06305e4SDávid Bolvanskýconstexpr bool is_constant_evaluated() noexcept { 5*b06305e4SDávid Bolvanský return __builtin_is_constant_evaluated(); 6*b06305e4SDávid Bolvanský } 7*b06305e4SDávid Bolvanský } // namespace std 8*b06305e4SDávid Bolvanský fn1()9*b06305e4SDávid Bolvanskýconstexpr int fn1() { 10*b06305e4SDávid Bolvanský if constexpr (std::is_constant_evaluated()) // expected-warning {{'std::is_constant_evaluated' will always evaluate to 'true' in a manifestly constant-evaluated expression}} 11*b06305e4SDávid Bolvanský return 0; 12*b06305e4SDávid Bolvanský else 13*b06305e4SDávid Bolvanský return 1; 14*b06305e4SDávid Bolvanský } 15*b06305e4SDávid Bolvanský fn2()16*b06305e4SDávid Bolvanskýconstexpr int fn2() { 17*b06305e4SDávid Bolvanský if constexpr (!std::is_constant_evaluated()) // expected-warning {{'std::is_constant_evaluated' will always evaluate to 'true' in a manifestly constant-evaluated expression}} 18*b06305e4SDávid Bolvanský return 0; 19*b06305e4SDávid Bolvanský else 20*b06305e4SDávid Bolvanský return 1; 21*b06305e4SDávid Bolvanský } 22*b06305e4SDávid Bolvanský fn3()23*b06305e4SDávid Bolvanskýconstexpr int fn3() { 24*b06305e4SDávid Bolvanský if constexpr (std::is_constant_evaluated() == false) // expected-warning {{'std::is_constant_evaluated' will always evaluate to 'true' in a manifestly constant-evaluated expression}} 25*b06305e4SDávid Bolvanský return 0; 26*b06305e4SDávid Bolvanský else 27*b06305e4SDávid Bolvanský return 1; 28*b06305e4SDávid Bolvanský } 29*b06305e4SDávid Bolvanský fn4()30*b06305e4SDávid Bolvanskýconstexpr int fn4() { 31*b06305e4SDávid Bolvanský if constexpr (__builtin_is_constant_evaluated() == true) // expected-warning {{'__builtin_is_constant_evaluated' will always evaluate to 'true' in a manifestly constant-evaluated expression}} 32*b06305e4SDávid Bolvanský return 0; 33*b06305e4SDávid Bolvanský else 34*b06305e4SDávid Bolvanský return 1; 35*b06305e4SDávid Bolvanský } 36*b06305e4SDávid Bolvanský fn5()37*b06305e4SDávid Bolvanskýconstexpr int fn5() { 38*b06305e4SDávid Bolvanský if constexpr (__builtin_is_constant_evaluated()) // expected-warning {{'__builtin_is_constant_evaluated' will always evaluate to 'true' in a manifestly constant-evaluated expression}} 39*b06305e4SDávid Bolvanský return 0; 40*b06305e4SDávid Bolvanský else 41*b06305e4SDávid Bolvanský return 1; 42*b06305e4SDávid Bolvanský } 43*b06305e4SDávid Bolvanský nowarn1()44*b06305e4SDávid Bolvanskýconstexpr int nowarn1() { 45*b06305e4SDávid Bolvanský if (std::is_constant_evaluated()) 46*b06305e4SDávid Bolvanský return 0; 47*b06305e4SDávid Bolvanský else 48*b06305e4SDávid Bolvanský return 1; 49*b06305e4SDávid Bolvanský } 50*b06305e4SDávid Bolvanský nowarn2()51*b06305e4SDávid Bolvanskýconstexpr int nowarn2() { 52*b06305e4SDávid Bolvanský if (!__builtin_is_constant_evaluated()) 53*b06305e4SDávid Bolvanský return 0; 54*b06305e4SDávid Bolvanský else 55*b06305e4SDávid Bolvanský return 1; 56*b06305e4SDávid Bolvanský } 57