[libc-commits] [libc] ed199c8 - [libc] Workaround for gcc complaining about implicit conversions with the ternary ?: operator. (#124820)
via libc-commits
libc-commits at lists.llvm.org
Tue Jan 28 13:05:00 PST 2025
Author: lntue
Date: 2025-01-28T16:04:57-05:00
New Revision: ed199c8d7668c14e9e9e8e4bfa59793e3f7f0266
URL: https://github.com/llvm/llvm-project/commit/ed199c8d7668c14e9e9e8e4bfa59793e3f7f0266
DIFF: https://github.com/llvm/llvm-project/commit/ed199c8d7668c14e9e9e8e4bfa59793e3f7f0266.diff
LOG: [libc] Workaround for gcc complaining about implicit conversions with the ternary ?: operator. (#124820)
Fixes https://github.com/llvm/llvm-project/issues/120427,
https://github.com/llvm/llvm-project/issues/122745
This is caused by a -Wconversion false-positive bug in gcc:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101537
Added:
Modified:
libc/src/__support/FPUtil/except_value_utils.h
Removed:
################################################################################
diff --git a/libc/src/__support/FPUtil/except_value_utils.h b/libc/src/__support/FPUtil/except_value_utils.h
index f8e4e92d3e1fb3..5f767769974d29 100644
--- a/libc/src/__support/FPUtil/except_value_utils.h
+++ b/libc/src/__support/FPUtil/except_value_utils.h
@@ -81,12 +81,19 @@ template <typename T, size_t N> struct ExceptValues {
StorageType out_bits = values[i].rnd_towardzero_result;
switch (fputil::quick_get_round()) {
case FE_UPWARD:
- out_bits += sign ? values[i].rnd_downward_offset
- : values[i].rnd_upward_offset;
+ if (sign)
+ out_bits += values[i].rnd_downward_offset;
+ else
+ out_bits += values[i].rnd_upward_offset;
break;
case FE_DOWNWARD:
- out_bits += sign ? values[i].rnd_upward_offset
- : values[i].rnd_downward_offset;
+ // Use conditionals instead of ternary operator to work around gcc's
+ // -Wconversion false positive bug:
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101537
+ if (sign)
+ out_bits += values[i].rnd_upward_offset;
+ else
+ out_bits += values[i].rnd_downward_offset;
break;
case FE_TONEAREST:
out_bits += values[i].rnd_tonearest_offset;
More information about the libc-commits
mailing list