This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [testcase] IA-32 ICE due to not splitted insn
On Mon, Aug 25, 2003 at 02:19:08PM -0700, Richard Henderson wrote:
> On Mon, Aug 25, 2003 at 04:45:54PM -0400, Jakub Jelinek wrote:
> > and only in .flow2 dump it becomes:
> > (insn 313 458 314 48 0x4001b39c (set (mem:DF (plus:SI (reg/f:SI 6 ebp)
> > (const_int -32 [0xffffffe0])) [0 k S8 A8])
> > (const_double:DF -939524096 [0xc8000000] 2.5e+1 [0x0.c8p+5])) 66 {*movdf_integer} (nil)
> > (expr_list:REG_EQUAL (const_double:DF -939524096 [0xc8000000] 2.5e+1 [0x0.c8p+5])
> > (nil)))
> > (which needs splitting).
>
> Eh? When does this happen?
cleanup_cfg -> ... flow_find_cross_jump -> insns_match_p
971 if (s1 != 0 && s2 != 0
972 && rtx_renumbered_equal_p (SET_DEST (s1), SET_DEST (s2)))
973 {
974 validate_change (i1, &SET_SRC (s1), XEXP (equiv1, 0), 1);
975 validate_change (i2, &SET_SRC (s2), XEXP (equiv2, 0), 1);
976 if (! rtx_renumbered_equal_p (p1, p2))
977 cancel_changes (0);
978 else if (apply_change_group ())
979 return true;
During postreload there is:
(insn 260 444 261 39 0x4001b39c (set (mem:DF (plus:SI (reg/f:SI 6 ebp)
(const_int -32 [0xffffffe0])) [0 k S8 A8])
(reg:DF 10 st(2) [112])) 66 {*movdf_integer} (nil)
(expr_list:REG_EQUAL (const_double:DF -939524096 [0xc8000000] 2.5e+1 [0x0.c8p+5])
(nil)))
(jump_insn 261 260 262 39 0x4001b39c (set (pc)
(label_ref 348)) 368 {jump} (nil)
(nil))
...
(insn 313 458 314 48 0x4001b39c (set (mem:DF (plus:SI (reg/f:SI 6 ebp)
(const_int -32 [0xffffffe0])) [0 k S8 A8])
(reg:DF 9 st(1) [126])) 66 {*movdf_integer} (nil)
(expr_list:REG_EQUAL (const_double:DF -939524096 [0xc8000000] 2.5e+1 [0x0.c8p+5])
(nil)))
(jump_insn 314 313 315 48 0x4001b39c (set (pc)
(label_ref 348)) 368 {jump} (nil)
(nil))
Jakub