Remove is_constant_evaluated() check

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
This commit is contained in:
Vladislav Shchapov 2023-05-24 20:17:52 +05:00 committed by Victor Zverovich
parent 19b17618a9
commit 5e988f8dfa
2 changed files with 10 additions and 32 deletions

View File

@ -3322,19 +3322,16 @@ template <typename Float> FMT_CONSTEXPR auto iceil(Float value) -> int {
auto max = (std::numeric_limits<int>::max)(); auto max = (std::numeric_limits<int>::max)();
ignore_unused(min, max); ignore_unused(min, max);
FMT_ASSERT(value >= min && value <= max, "value not in int range"); FMT_ASSERT(value >= min && value <= max, "value not in int range");
if (is_constant_evaluated()) { do {
do { auto mid = min + static_cast<int>((static_cast<unsigned>(max) -
auto mid = min + static_cast<int>((static_cast<unsigned>(max) - static_cast<unsigned>(min)) /
static_cast<unsigned>(min)) / 2);
2); if (mid < value)
if (mid < value) min = mid;
min = mid; else
else max = mid;
max = mid; } while (min + 1 != max);
} while (min + 1 != max); return max;
return max;
}
return static_cast<int>(std::ceil(value));
} }
template <typename Float> template <typename Float>

View File

@ -524,22 +524,6 @@ TEST(format_impl_test, to_utf8) {
EXPECT_EQ(s.size(), u.size()); EXPECT_EQ(s.size(), u.size());
} }
FMT_CONSTEXPR20 bool constexpr_iceil() {
for (double v : std::initializer_list<double>{
((std::numeric_limits<int>::min)() + 0.5),
-1.2,
-0.2,
0.0,
0.2,
1.2,
4.0,
((std::numeric_limits<int>::max)() - 0.5),
}) {
auto r = fmt::detail::iceil(v);
fmt::detail::ignore_unused(r);
}
return true;
}
TEST(format_impl_test, iceil) { TEST(format_impl_test, iceil) {
for (double v : std::initializer_list<double>{ for (double v : std::initializer_list<double>{
((std::numeric_limits<int>::min)() + 0.5), ((std::numeric_limits<int>::min)() + 0.5),
@ -553,7 +537,4 @@ TEST(format_impl_test, iceil) {
}) { }) {
EXPECT_EQ(fmt::detail::iceil(v), static_cast<int>(std::ceil(v))); EXPECT_EQ(fmt::detail::iceil(v), static_cast<int>(std::ceil(v)));
} }
FMT_CONSTEXPR20 auto result = constexpr_iceil();
EXPECT_TRUE(result);
} }