https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81113
Bug ID: 81113
Summary: ICE with AVX structure field
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: nathan at gcc dot gnu.org
Target Milestone: ---
Created attachment 41572
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41572&action=edit
Exemplar
target is x86_64
The attached ICEs in expr.c, lowering the second call to Quux to RTL:
<materialize-all-clones> <simdclone> void Frob(const Good&, const Bad&)during
RTL pass: expand
bug.ii: In function 'void Frob(const Good&, const Bad&)':
bug.ii:20:13: internal compiler error: in convert_move, at expr.c:231
Quux (bad.val);
~~~~^~~
0xcc9f5b convert_move(rtx_def*, rtx_def*, int)
/data/users/nathans/trunk/obj/x86_64/../../src/gcc/expr.c:231
0xcd9bd1 store_expr_with_bounds(tree_node*, rtx_def*, int, bool, bool,
tree_node*)
/data/users/nathans/trunk/obj/x86_64/../../src/gcc/expr.c:5631
0xcd8038 expand_assignment(tree_node*, tree_node*, bool)
/data/users/nathans/trunk/obj/x86_64/../../src/gcc/expr.c:5323
0xb80c31 expand_gimple_stmt_1
/data/users/nathans/trunk/obj/x86_64/../../src/gcc/cfgexpand.c:3645
0xb8101c expand_gimple_stmt
/data/users/nathans/trunk/obj/x86_64/../../src/gcc/cfgexpand.c:3741
0xb880d6 expand_gimple_basic_block
/data/users/nathans/trunk/obj/x86_64/../../src/gcc/cfgexpand.c:5745
0xb89b06 execute
/data/users/nathans/trunk/obj/x86_64/../../src/gcc/cfgexpand.c:6354
The Good struct is passed just fine. Both Good and Bad have the same size and
alignment. I suspect different modes though.