[libc-commits] [libc] [libc] Suppress GCC loop optimization warning (PR #132458)
Joseph Huber via libc-commits
libc-commits at lists.llvm.org
Fri Mar 21 12:31:36 PDT 2025
https://github.com/jhuber6 updated https://github.com/llvm/llvm-project/pull/132458
>From 7cdeffa47c66a966a5c53ba863f763f2f6a01107 Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Fri, 21 Mar 2025 14:20:20 -0500
Subject: [PATCH] [libc] Suppress GCC loop optimization warning
Summary:
This appears to be a false positive on some versions of GCC.
---
libc/src/__support/big_int.h | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/libc/src/__support/big_int.h b/libc/src/__support/big_int.h
index 85db31d01399a..25dddfef9ca8c 100644
--- a/libc/src/__support/big_int.h
+++ b/libc/src/__support/big_int.h
@@ -790,11 +790,21 @@ struct BigInt {
remainder[pos] = rem;
}
+ // GCC currently emits a false-positive warning on this for some compilers.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Waggressive-loop-optimizations"
+#endif
+
// Set the remaining lower bits of the remainder.
for (; pos > 0; --pos) {
remainder[pos - 1] = val[pos - 1];
}
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
*this = quotient;
return remainder;
}
@@ -851,8 +861,8 @@ struct BigInt {
result[i] = lhs[i] OP rhs[i]; \
return result; \
} \
- LIBC_INLINE friend constexpr BigInt operator OP##=(BigInt &lhs, \
- const BigInt &rhs) { \
+ LIBC_INLINE friend constexpr BigInt operator OP## = \
+ (BigInt & lhs, const BigInt &rhs) { \
for (size_t i = 0; i < WORD_COUNT; ++i) \
lhs[i] OP## = rhs[i]; \
return lhs; \
More information about the libc-commits
mailing list