From 8e684b1ddc43234032f17b1be537cedd83c427dd Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Wed, 7 May 2025 13:37:15 +0000 Subject: [PATCH] math: Fix UB in ldbl-128ibm ilogb UBSAN: Undefined behaviour in ../sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c:45:37 left shift of 4611686018427387904 by 1 cannot be represented in type 'long int' --- sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c b/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c index 9daa970f84..b86c841d08 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c @@ -27,6 +27,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include #include +#include int __ieee754_ilogbl(long double x) { @@ -42,7 +43,8 @@ int __ieee754_ilogbl(long double x) if(hx==0) return FP_ILOGB0; /* ilogbl(0) = FP_ILOGB0 */ else /* subnormal x */ - for (ix = -1022, hx<<=11; hx>0; hx<<=1) ix -=1; + //for (ix = -1022, hx<<=11; hx>0; hx<<=1) ix -=1; + ix = -1022 - stdc_leading_zeros (hx << 11); return ix; } else if (hx < 0x7ff0000000000000LL) -- 2.47.2