From: H.J. Lu Date: Thu, 7 Nov 2013 09:58:05 +0000 (+0000) Subject: Use Pmode with stack_pointer_rtx X-Git-Tag: upstream/12.2.0~66779 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d9befd12523bf797e1ace0af5bd2545330043227;p=platform%2Fupstream%2Fgcc.git 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 --- 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 + + PR target/59034 + * config/i386/i386.md (push peepholer/splitter): Use Pmode + with stack_pointer_rtx. + 2013-11-07 Bin Cheng * 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 + + PR target/59034 + * gcc.target/i386/pr59034-1.c: New test. + * gcc.target/i386/pr59034-2.c: Likewise. + 2013-11-07 Bin Cheng * 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; +}