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.