From: Richard Biener Date: Mon, 27 Sep 2021 11:36:12 +0000 (+0200) Subject: middle-end/102450 - avoid type_for_size for non-existing modes X-Git-Tag: basepoints/gcc-13~4414 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d06dc8a2c73735e9496f434787ba4c93ceee5eea;p=thirdparty%2Fgcc.git middle-end/102450 - avoid type_for_size for non-existing modes This avoids asking type_for_size for types with sizes for which no scalar integer mode exists. Instead the following uses int_mode_for_size to get the same result. 2021-09-27 Richard Biener PR middle-end/102450 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid using type_for_size, instead use int_mode_for_size. --- diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 6fea8a6f9fdb..474d0f443755 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -1001,9 +1001,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi, return false; scalar_int_mode mode; - tree type = lang_hooks.types.type_for_size (ilen * 8, 1); - if (type - && is_a (TYPE_MODE (type), &mode) + if (int_mode_for_size (ilen * 8, 0).exists (&mode) && GET_MODE_SIZE (mode) * BITS_PER_UNIT == ilen * 8 && have_insn_for (SET, mode) /* If the destination pointer is not aligned we must be able @@ -1013,6 +1011,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi, || (optab_handler (movmisalign_optab, mode) != CODE_FOR_nothing))) { + tree type = build_nonstandard_integer_type (ilen * 8, 1); tree srctype = type; tree desttype = type; if (src_align < GET_MODE_ALIGNMENT (mode))