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

Carrot <carrot at google dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |carrot at google dot com

--- Comment #19 from Carrot <carrot at google dot com> 2011-09-13 08:37:52 UTC 
---
(In reply to comment #15)
> The machine-dependent reorg pass does something unexpected:
> 
> (insn 30 18 14 3 (set (reg/f:SI 11 fp)
>         (plus:SI (reg/f:SI 11 fp)
>             (const_int 36 [0x24]))) 4 {*arm_addsi3}
>      (nil))
> 
> (insn 14 30 16 3 (use (reg/f:SI 11 fp)) -1
>      (nil))
> 
> (insn 16 14 24 3 (unspec_volatile [
>             (const_int 0 [0])
>         ] VUNSPEC_BLOCKAGE) 252 {blockage}
>      (nil))
> 
> (insn 24 16 27 3 (set (reg/i:SI 0 r0)
>         (mem/c:SI (plus:SI (reg/f:SI 11 fp)
>                 (const_int -56 [0xffffffffffffffc8])) [6 %sfp+-20 S4 A32]))
> comp-goto-2.c:26 176 {*arm_movsi_insn}
>      (nil))
> 
> is reordered into:
> 
> (insn 14 18 16 (use (reg/f:SI 11 fp)) -1
>      (nil))
> 
> (insn 16 14 24 (unspec_volatile [
>             (const_int 0 [0])
>         ] VUNSPEC_BLOCKAGE) 252 {blockage}
>      (nil))
> 
> (insn 24 16 30 (set (reg/i:SI 0 r0)
>         (mem/c:SI (plus:SI (reg/f:SI 11 fp)
>                 (const_int -20 [0xffffffffffffffec])) [6 %sfp+-20 S4 A32]))
> comp-goto-2.c:26 176 {*arm_movsi_insn}
>      (nil))
> 
> (insn 30 24 27 (set (reg/f:SI 11 fp)
>         (plus:SI (reg/f:SI 11 fp)
>             (const_int 36 [0x24]))) 4 {*arm_addsi3}
>      (nil))
> 
> despite the blockage.

I observed the same transformation, but in postreload pass. My command line is

"-march=armv7-a" "-mfloat-abi=soft" -Os -w

Reply via email to