bolt/deps/llvm-18.1.8/clang/test/AST/Interp/if.cpp

54 lines
919 B
C++
Raw Normal View History

2025-02-14 19:21:04 +01:00
// RUN: %clang_cc1 -std=c++23 -fsyntax-only -fexperimental-new-constant-interpreter %s -verify
// RUN: %clang_cc1 -std=c++23 -fsyntax-only %s -verify=ref
// expected-no-diagnostics
// ref-no-diagnostics
namespace ConstEval {
constexpr int f() {
int i = 0;
if consteval {
i = 1;
}
return i;
}
static_assert(f() == 1, "");
constexpr int f2() {
int i = 0;
if !consteval {
i = 12;
if consteval {
i = i + 1;
}
}
return i;
}
static_assert(f2() == 0, "");
};
namespace InitDecl {
constexpr bool f() {
if (int i = 5; i != 10) {
return true;
}
return false;
}
static_assert(f(), "");
constexpr bool f2() {
if (bool b = false; b) {
return true;
}
return false;
}
static_assert(!f2(), "");
constexpr int attrs() {
if (1) [[likely]] {}
return 1;
}
static_assert(attrs() == 1, "");
};