[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: