https://gcc.gnu.org/g:3db8dd4139a7a5ce941684f1fc05ee0652e35544
commit r15-649-g3db8dd4139a7a5ce941684f1fc05ee0652e35544 Author: Eric Botcazou <ebotca...@adacore.com> Date: Sun May 19 11:38:40 2024 +0200 Fix oversight in latest change to can_mult_highpart_p gcc/ * optabs-query.cc (can_mult_highpart_p): Test for the existence of a wider mode instead of requiring it. Diff: --- gcc/optabs-query.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gcc/optabs-query.cc b/gcc/optabs-query.cc index de145be7075f..5149de57468d 100644 --- a/gcc/optabs-query.cc +++ b/gcc/optabs-query.cc @@ -510,17 +510,16 @@ int can_mult_highpart_p (machine_mode mode, bool uns_p) { optab op; - scalar_int_mode int_mode; + scalar_int_mode int_mode, wider_mode; op = uns_p ? umul_highpart_optab : smul_highpart_optab; if (optab_handler (op, mode) != CODE_FOR_nothing) return 1; /* If the mode is integral, synth from widening or larger operations. */ - if (is_a <scalar_int_mode> (mode, &int_mode)) + if (is_a <scalar_int_mode> (mode, &int_mode) + && GET_MODE_WIDER_MODE (int_mode).exists (&wider_mode)) { - scalar_int_mode wider_mode = GET_MODE_WIDER_MODE (int_mode).require (); - op = uns_p ? umul_widen_optab : smul_widen_optab; if (convert_optab_handler (op, wider_mode, mode) != CODE_FOR_nothing) return 2;