Get stack adjustment from push operand in pushsf splitter
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Jan 2014 03:38:10 +0000 (03:38 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Jan 2014 03:38:10 +0000 (03:38 +0000)
commitd5ad33f79899be3e3f92f9ff4f3d3cd496829e59
tree1b60119c165780604b3601e747df63618ab474ea
parent1c09f133d55cfb470379a0f33f09243bca2eeb16
Get stack adjustment from push operand in pushsf splitter

pushsf for -m64/-mx32 looks like

(set (mem:SF (pre_modify:SI (reg/f:SI 7 sp)
    (plus:SI (reg/f:SI 7 sp)
    (const_int -8))))
     (reg:SF 22 xmm1 [orig:84 D.1790 ] [84]))

Stack adjustment is in push operand and it isn't stack register mode size
which may be 4 bytes for -mx32.  This patch gets stack adjustment from
push operand if code of push isn't PRE_DEC.

gcc/

PR target/59929
* config/i386/i386.md (pushsf splitter): Get stack adjustment
from push operand if code of push isn't PRE_DEC.

gcc/testsuite/

PR target/59929
* gcc.target/i386/pr59929.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207023 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/i386.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr59929.c [new file with mode: 0644]