http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54688



Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

                 CC|                            |bernds at gcc dot gnu.org



--- Comment #3 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-09-26 
11:43:40 UTC ---

It's r191493, the transformation is applied to a %sp-based load, which is

invalid since the frame is destroyed, and the resulting offset is bogus:



In .split4:



(insn 52 41 43 4 (set (reg:SI 1 %g1 [orig:137 D.6097+8 ] [137])

        (mem/c:SI (plus:SI (reg/f:SI 14 %sp)

                (const_int 80 [0x50])) [23 D.6097+8 S4 A64]))

/home/eric/svn/gcc/gcc/ada/restrict.adb:1067 61 {*movsi_insn}

     (expr_list:REG_EQUIV (mem/c:SI (plus:SI (reg/f:SI 14 %sp)

                (const_int 80 [0x50])) [23 D.6097+8 S4 A64])

        (nil)))



[...]

(note 60 43 61 4 NOTE_INSN_EPILOGUE_BEG)



(insn 61 60 62 4 (set (reg/f:SI 14 %sp)

        (minus:SI (reg/f:SI 14 %sp)

            (const_int -88 [0xffffffffffffffa8])))

/home/eric/svn/gcc/gcc/ada/restrict.adb:1068 183 {subsi3}



In .sched2:



(insn 61 64 52 4 (set (reg/f:SI 14 %sp)

        (minus:SI (reg/f:SI 14 %sp)

            (const_int -88 [0xffffffffffffffa8])))

/home/eric/svn/gcc/gcc/ada/restrict.adb:1068 183 {subsi3}

     (nil))



(insn 52 61 43 4 (set (reg:SI 1 %g1 [orig:137 D.6097+8 ] [137])

        (mem/c:SI (plus:SI (reg/f:SI 14 %sp)

                (const_int 168 [0xa8])) [23 D.6097+8 S4 A64]))

/home/eric/svn/gcc/gcc/ada/restrict.adb:1067 61 {*movsi_insn}

     (expr_list:REG_EQUIV (mem/c:SI (plus:SI (reg/f:SI 14 %sp)

                (const_int 80 [0x50])) [23 D.6097+8 S4 A64])

        (nil)))

Reply via email to