diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2013-11-07 09:58:05 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2013-11-07 01:58:05 -0800 |
commit | d9befd12523bf797e1ace0af5bd2545330043227 (patch) | |
tree | c7fe080d71111169ec204993678b6156e650e107 | |
parent | 1a1a55342cdeae4d1431b2b0c6c753939b8f1d4d (diff) | |
download | gcc-d9befd12523bf797e1ace0af5bd2545330043227.zip gcc-d9befd12523bf797e1ace0af5bd2545330043227.tar.gz gcc-d9befd12523bf797e1ace0af5bd2545330043227.tar.bz2 |
Use Pmode with stack_pointer_rtx
gcc/
PR target/59034
* config/i386/i386.md (push peepholer/splitter): Use Pmode
with stack_pointer_rtx.
gcc/testsuite/
PR target/59034
* gcc.target/i386/pr59034-1.c: New test.
* gcc.target/i386/pr59034-2.c: Likewise.
From-SVN: r204501
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr59034-1.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr59034-2.c | 10 |
5 files changed, 34 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 89ce097..4991a3a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-11-07 H.J. Lu <hongjiu.lu@intel.com> + + PR target/59034 + * config/i386/i386.md (push peepholer/splitter): Use Pmode + with stack_pointer_rtx. + 2013-11-07 Bin Cheng <bin.cheng@arm.com> * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Check equality diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index c7ec0c1..a2c81e5 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1669,7 +1669,7 @@ split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); - operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx, + operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (4))); }) @@ -1686,7 +1686,7 @@ split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); - operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx, + operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (4))); }) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c89765b..56d30a3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-11-07 H.J. Lu <hongjiu.lu@intel.com> + + PR target/59034 + * gcc.target/i386/pr59034-1.c: New test. + * gcc.target/i386/pr59034-2.c: Likewise. + 2013-11-07 Bin Cheng <bin.cheng@arm.com> * gcc.dg/tree-ssa/loop-2.c: Refine check condition. diff --git a/gcc/testsuite/gcc.target/i386/pr59034-1.c b/gcc/testsuite/gcc.target/i386/pr59034-1.c new file mode 100644 index 0000000..1f4c4e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59034-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-require-effective-target maybe_x32 } */ +/* { dg-options "-O -mx32 -mtune=corei7 -maddress-mode=short" } */ + +extern int foo(int, ...); +int bar(void) { + long double l = 1.2345E6; + foo(0, l); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/pr59034-2.c b/gcc/testsuite/gcc.target/i386/pr59034-2.c new file mode 100644 index 0000000..14e594b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59034-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-require-effective-target maybe_x32 } */ +/* { dg-options "-O -mx32 -mtune=corei7 -maddress-mode=long" } */ + +extern int foo(int, ...); +int bar(void) { + long double l = 1.2345E6; + foo(0, l); + return 0; +} |