[Bug middle-end/68291] [6 regression] ICE in emit_move_insn, at expr.c:3540
ebotcazou at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Dec 1 17:54:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68291
--- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
This comes from -ftree-coalesce-vars in expand_function_start:
/* If we may coalesce this result, make sure it has the expected mode. */
if (flag_tree_coalesce_vars && is_gimple_reg (res))
{
tree def = ssa_default_def (cfun, res);
gcc_assert (def);
machine_mode mode = promote_ssa_mode (def, NULL);
set_parm_rtl (res, gen_reg_rtx (mode));
}
(gdb) p debug_tree(def)
<ssa_name 0x7ffff6c40798
type <vector_type 0x7ffff6d09690 __m128
type <real_type 0x7ffff6c4d3f0 float SF
size <integer_cst 0x7ffff6c37f90 constant 32>
unit size <integer_cst 0x7ffff6c37fa8 constant 4>
align 32 symtab 0 alias set 1 canonical type 0x7ffff6c4d3f0
precision 32
pointer_to_this <pointer_type 0x7ffff6c4d5e8>>
BLK
size <integer_cst 0x7ffff6c37d98 constant 128>
unit size <integer_cst 0x7ffff6c37db0 constant 16>
align 128 symtab 0 alias set -1 canonical type 0x7ffff6d09540
attributes <tree_list 0x7ffff6d05cd0
purpose <identifier_node 0x7ffff6d17140 __may_alias__>> nunits 4
context <translation_unit_decl 0x7ffff6d25078 D.1400>>
var <result_decl 0x7ffff6d25000 D.1399>def_stmt GIMPLE_NOP
version 10>
so we end up creating a REG with BLKmode:
(gdb) p debug_tree(res)
<result_decl 0x7ffff6d25000 D.1399
type <vector_type 0x7ffff6d09690 __m128
type <real_type 0x7ffff6c4d3f0 float SF
size <integer_cst 0x7ffff6c37f90 constant 32>
unit size <integer_cst 0x7ffff6c37fa8 constant 4>
align 32 symtab 0 alias set 1 canonical type 0x7ffff6c4d3f0
precision 32
pointer_to_this <pointer_type 0x7ffff6c4d5e8>>
BLK
size <integer_cst 0x7ffff6c37d98 constant 128>
unit size <integer_cst 0x7ffff6c37db0 constant 16>
align 128 symtab 0 alias set -1 canonical type 0x7ffff6d09540
attributes <tree_list 0x7ffff6d05cd0
purpose <identifier_node 0x7ffff6d17140 __may_alias__>> nunits 4
context <translation_unit_decl 0x7ffff6d25078 D.1400>>
ignored BLK file pr39928-1.c line 8 col 1 size <integer_cst 0x7ffff6c37d98
128> unit size <integer_cst 0x7ffff6c37db0 16>
align 128 context <function_decl 0x7ffff6d0d380 vq_nbest>
(reg:BLK 109 [ <retval> ])>
instead of the expected:
<result_decl 0x7ffff6d25000 D.1399
type <vector_type 0x7ffff6d09690 __m128
type <real_type 0x7ffff6c4d3f0 float SF
size <integer_cst 0x7ffff6c37f90 constant 32>
unit size <integer_cst 0x7ffff6c37fa8 constant 4>
align 32 symtab 0 alias set 1 canonical type 0x7ffff6c4d3f0
precision 32
pointer_to_this <pointer_type 0x7ffff6c4d5e8>>
BLK
size <integer_cst 0x7ffff6c37d98 constant 128>
unit size <integer_cst 0x7ffff6c37db0 constant 16>
align 128 symtab 0 alias set -1 canonical type 0x7ffff6d09540
attributes <tree_list 0x7ffff6d05cd0
purpose <identifier_node 0x7ffff6d17140 __may_alias__>> nunits 4
context <translation_unit_decl 0x7ffff6d25078 D.1400>>
ignored BLK file pr39928-1.c line 8 col 1 size <integer_cst 0x7ffff6c37d98
128> unit size <integer_cst 0x7ffff6c37db0 16>
align 128 context <function_decl 0x7ffff6d0d380 vq_nbest>
(parallel:BLK [
(expr_list:REG_DEP_TRUE (reg:DI 109 [ <retval> ])
(const_int 0 [0]))
(expr_list:REG_DEP_TRUE (reg:DI 110 [ <retval>+8 ])
(const_int 8 [0x8]))
])>
and this later confuses expand_function_end.
More information about the Gcc-bugs
mailing list