diff options
author | Tom de Vries <tom@codesourcery.com> | 2014-05-30 11:39:49 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2014-05-30 11:39:49 +0000 |
commit | 5028356f89c3b41afa1a06ded96c6b82dd732ab7 (patch) | |
tree | 3459e32db14e3ba9f4c29f960b72170af6cbc471 /gcc | |
parent | 29f095214040d604e9ec4f933bd2c3bfad7a722b (diff) | |
download | gcc-5028356f89c3b41afa1a06ded96c6b82dd732ab7.zip gcc-5028356f89c3b41afa1a06ded96c6b82dd732ab7.tar.gz gcc-5028356f89c3b41afa1a06ded96c6b82dd732ab7.tar.bz2 |
-fuse-caller-save - Enable for i386
2014-05-30 Tom de Vries <tom@codesourcery.com>
* config/i386/i386.c (TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS):
Redefine as true.
* gcc.target/i386/fuse-caller-save.c: New test.
* gcc.dg/ira-shrinkwrap-prep-1.c: Run with -fno-use-caller-save.
* gcc.dg/ira-shrinkwrap-prep-2.c: Same.
From-SVN: r211078
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/fuse-caller-save.c | 25 |
6 files changed, 41 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4dc8b7a..c7b2af3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2014-05-30 Tom de Vries <tom@codesourcery.com> + * config/i386/i386.c (TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS): + Redefine as true. + +2014-05-30 Tom de Vries <tom@codesourcery.com> + * lra-int.h (struct lra_reg): Add field actual_call_used_reg_set. * lra.c (initialize_lra_reg_info_element): Add init of actual_call_used_reg_set field. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 8827256..83d3ba3 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -47272,6 +47272,9 @@ ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) #undef TARGET_MODE_PRIORITY #define TARGET_MODE_PRIORITY ix86_mode_priority +#undef TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS +#define TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS true + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-i386.h" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1ed6aed..1d846dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-05-30 Tom de Vries <tom@codesourcery.com> + + * gcc.target/i386/fuse-caller-save.c: New test. + * gcc.dg/ira-shrinkwrap-prep-1.c: Run with -fno-use-caller-save. + * gcc.dg/ira-shrinkwrap-prep-2.c: Same. + 2014-04-30 Alan Lawrence <alan.lawrence@arm.com> gcc.target/arm/simd/vrev16p8_1.c: New file. diff --git a/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c b/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c index 171a2bd..fc7b142 100644 --- a/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c +++ b/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c @@ -1,5 +1,5 @@ /* { dg-do compile { target { { x86_64-*-* && lp64 } || { powerpc*-*-* && lp64 } } } } */ -/* { dg-options "-O3 -fdump-rtl-ira -fdump-rtl-pro_and_epilogue" } */ +/* { dg-options "-O3 -fdump-rtl-ira -fdump-rtl-pro_and_epilogue -fno-use-caller-save" } */ long __attribute__((noinline, noclone)) foo (long a) diff --git a/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c b/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c index ed08494..2e5a9cf 100644 --- a/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c +++ b/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c @@ -1,5 +1,5 @@ /* { dg-do compile { target { { x86_64-*-* && lp64 } || { powerpc*-*-* && lp64 } } } } */ -/* { dg-options "-O3 -fdump-rtl-ira -fdump-rtl-pro_and_epilogue" } */ +/* { dg-options "-O3 -fdump-rtl-ira -fdump-rtl-pro_and_epilogue -fno-use-caller-save" } */ long __attribute__((noinline, noclone)) foo (long a) diff --git a/gcc/testsuite/gcc.target/i386/fuse-caller-save.c b/gcc/testsuite/gcc.target/i386/fuse-caller-save.c new file mode 100644 index 0000000..ff77d81 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/fuse-caller-save.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fuse-caller-save" } */ +/* Testing -fuse-caller-save optimization option. */ + +static int __attribute__((noinline)) +bar (int x) +{ + return x + 3; +} + +int __attribute__((noinline)) +foo (int y) +{ + return y + bar (y); +} + +int +main (void) +{ + return !(foo (5) == 13); +} + +/* { dg-final { scan-assembler-not "\.cfi_def_cfa_offset" } } */ +/* { dg-final { scan-assembler-not "\.cfi_offset" } } */ + |