[Bug bootstrap/31344] [4.3 Regression] bootstrap broken on i[345]86-linux
------- Comment #19 from ubizjak at gmail dot com 2007-05-07 08:19 -------
Here is the problem:
Compilation enteres emit_move_via_integer() with:
x = (mem/i:SD (pre_dec:SI (reg/f:SI 7 sp)) [0 S4 A32])
y = (reg/v:SD 59 [ arg ])
emit_move_change_mode() generates invalid insn from x because it forces
pre_dec:SI into pseudo register. emit_move_change_mode() generates following
sequence:
(insn 11 10 12 (set (reg/f:SI 61)
(pre_dec:SI (reg/f:SI 7 sp))) -1 (nil)
(nil))
(insn 12 11 13 (set (mem/i:SI (reg/f:SI 61) [0 S4 A32])
(subreg:SI (reg/v:SD 59 [ arg ]) 0)) -1 (nil)
(nil))
For some reason, pre_dec is forced into pseudo in
adjust_address_1()/change_address_1(). Above sequence is surely wrong, as i386
does not have a move that would also decrement one of its operands before move.
--
ubizjak at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31344
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
Reply to: