https://gcc.gnu.org/g:5173a61b68074b168b3101a9f815b579089aac76

commit r16-4137-g5173a61b68074b168b3101a9f815b579089aac76
Author: Andre Vieira <[email protected]>
Date:   Tue Sep 30 10:57:46 2025 +0100

    bitint: fix inconsistency in bitint_precision_kind
    
    This patch fixes an issue where the first call to bitint_precision_kind 
would
    return the bitint kind, which was also inconsistent with subsequent calls 
with
    the same bitint size.
    
    gcc/ChangeLog:
    
            * gimple-lower-bitint.cc (bitint_precision_kind): Fix inconsistency 
in
            results between first and consecutive calls to this function.

Diff:
---
 gcc/gimple-lower-bitint.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gcc/gimple-lower-bitint.cc b/gcc/gimple-lower-bitint.cc
index 01ce5487b257..28802e3b4aaa 100644
--- a/gcc/gimple-lower-bitint.cc
+++ b/gcc/gimple-lower-bitint.cc
@@ -105,7 +105,7 @@ bitint_precision_kind (int prec)
   bitint_big_endian = info.big_endian;
   bitint_extended = info.extended;
   if (!large_min_prec
-      && GET_MODE_PRECISION (limb_mode) < MAX_FIXED_MODE_SIZE)
+      && GET_MODE_PRECISION (limb_mode) <= MAX_FIXED_MODE_SIZE)
     large_min_prec = MAX_FIXED_MODE_SIZE + 1;
   if (!limb_prec)
     limb_prec = GET_MODE_PRECISION (limb_mode);
@@ -125,9 +125,9 @@ bitint_precision_kind (int prec)
        mid_min_prec = prec;
       return bitint_prec_middle;
     }
-  if (large_min_prec && prec <= large_min_prec)
-    return bitint_prec_large;
-  return bitint_prec_huge;
+  if (huge_min_prec && prec >= huge_min_prec)
+    return bitint_prec_huge;
+  return bitint_prec_large;
 }
 
 /* Same for a TYPE.  */

Reply via email to