aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2013-11-07 09:58:05 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2013-11-07 01:58:05 -0800
commitd9befd12523bf797e1ace0af5bd2545330043227 (patch)
treec7fe080d71111169ec204993678b6156e650e107 /gcc
parent1a1a55342cdeae4d1431b2b0c6c753939b8f1d4d (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md4
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr59034-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr59034-2.c10
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;
+}