https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109302
Bug ID: 109302
Summary: [12/13 Regression] ICE in emit_move_insn, at
expr.cc:4225
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: [email protected]
Target Milestone: ---
Started between 20210905 and 20210919, with -mavx512f or -mavx512pf :
$ cat z1.c
typedef unsigned U __attribute__ ((vector_size (64)));
typedef unsigned __int128 V __attribute__ ((vector_size (64)));
static inline V
bar (U u, U x, V v)
{
v = (V)(U) { 0, ~0 };
v[x[0]] <<= u[-63];
return v;
}
__attribute__((target_clones("arch=x86-64", "default")))
V
foo (U u)
{
return bar (u, (U) {}, (V) {});
}
$ gcc-13-20230326 -c z1.c -O2 -mavx512f
In function 'foo.arch_x86_64':
cc1: warning: AVX512F vector return without AVX512F enabled changes the ABI
[-Wpsabi]
z1.c:12:1: note: the ABI for passing parameters with 64-byte alignment has
changed in GCC 4.6
12 | foo (U u)
| ^~~
z1.c:12:1: warning: AVX512F vector argument without AVX512F enabled changes the
ABI [-Wpsabi]
during RTL pass: expand
z1.c:14:10: internal compiler error: in emit_move_insn, at expr.cc:4225
14 | return bar (u, (U) {}, (V) {});
| ^~~~~~~~~~~~~~~~~~~~~~~
0x91273d emit_move_insn(rtx_def*, rtx_def*)
../../gcc/expr.cc:4224
0x9203d0 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode,
expand_modifier)
../../gcc/expr.cc:10580
0x910a95 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
../../gcc/expr.cc:10801
0x9198b3 store_expr(tree_node*, rtx_def*, int, bool, bool)
../../gcc/expr.cc:6330
0x91af3e expand_assignment(tree_node*, tree_node*, bool)
../../gcc/expr.cc:6048
0x80afa0 expand_gimple_stmt_1
../../gcc/cfgexpand.cc:3946
0x80afa0 expand_gimple_stmt
../../gcc/cfgexpand.cc:4044
0x8101a7 expand_gimple_basic_block
../../gcc/cfgexpand.cc:6106
0x812c6e execute
../../gcc/cfgexpand.cc:6841