[Bug target/98065] [11 Regression] ICE in rs6000_expand_vector_set, at config/rs6000/rs6000.c:7024 since r11-5457
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 19 11:51:48 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98065
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I guess the first ICE could be fixed by using just "const_int_operand" through
define_mode_iterator for the altivec non-vsx modes in:
(define_expand "vec_set<mode>"
[(match_operand:VEC_E 0 "vlogical_operand")
(match_operand:<VEC_base> 1 "register_operand")
(match_operand 2 "reg_or_cint_operand")]
"VECTOR_MEM_ALTIVEC_OR_VSX_P (<MODE>mode)"
{
rs6000_expand_vector_set (operands[0], operands[1], operands[2]);
DONE;
})
but I could be wrong. I think using FAIL might not work because
can_vec_set_var_idx_p decides whether it can do the non-constant vector sets
just based on predicates (though store_bit_field_1 has a fallback).
But the P9 makes me wonder which modes can actually be used with the variable
set.
I think you need to add full testsuite coverage for all the modes and test in
all the different ISA settings the expanders care about here.
More information about the Gcc-bugs
mailing list