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/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 01ce5487b25..28802e3b4aa 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. */