git: e50027e38d4f - main - Remove unnecessary const and volatile qualifiers from __fp_type_select()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 15 Jul 2022 18:10:25 UTC
The branch main has been updated by dim:
URL: https://cgit.FreeBSD.org/src/commit/?id=e50027e38d4f93887691f87b024e0abf37e98c78
commit e50027e38d4f93887691f87b024e0abf37e98c78
Author: Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2022-07-14 11:20:52 +0000
Commit: Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2022-07-15 18:09:27 +0000
Remove unnecessary const and volatile qualifiers from __fp_type_select()
Since https://github.com/llvm/llvm-project/commit/ca75ac5f04f2, clang 15
has a new warning about _Generic selection expressions, such as used in
math.h:
lib/libc/gdtoa/_ldtoa.c:82:10: error: due to lvalue conversion of the controlling expression, association of type 'volatile float' will never be selected because it is qualified [-Werror,-Wunreachable-code-generic-assoc]
switch (fpclassify(u.e)) {
^
lib/msun/src/math.h:109:2: note: expanded from macro 'fpclassify'
__fp_type_select(x, __fpclassifyf, __fpclassifyd, __fpclassifyl)
^
lib/msun/src/math.h:85:14: note: expanded from macro '__fp_type_select'
volatile float: f(x), \
^
This is because the controlling expression always undergoes lvalue
conversion first, dropping any cv-qualifiers. The 'const', 'volatile',
and 'volatile const' associations will therefore never be used.
MFC after: 1 week
Reviewed by: theraven
Differential Revision: https://reviews.freebsd.org/D35815
---
lib/msun/src/math.h | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h
index 98601f825bbe..a0edea04dde2 100644
--- a/lib/msun/src/math.h
+++ b/lib/msun/src/math.h
@@ -81,16 +81,7 @@ extern const union __nan_un {
#define __fp_type_select(x, f, d, ld) __extension__ _Generic((x), \
float: f(x), \
double: d(x), \
- long double: ld(x), \
- volatile float: f(x), \
- volatile double: d(x), \
- volatile long double: ld(x), \
- volatile const float: f(x), \
- volatile const double: d(x), \
- volatile const long double: ld(x), \
- const float: f(x), \
- const double: d(x), \
- const long double: ld(x))
+ long double: ld(x))
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
#define __fp_type_select(x, f, d, ld) __builtin_choose_expr( \
__builtin_types_compatible_p(__typeof(x), long double), ld(x), \