diff options
author | Steve Ellcey <sellcey@imgtec.com> | 2015-10-09 17:12:26 +0000 |
---|---|---|
committer | Steve Ellcey <sje@gcc.gnu.org> | 2015-10-09 17:12:26 +0000 |
commit | 4c926b8a613d7be44154c55a9dcaa6f2b84ea66e (patch) | |
tree | 1a9bdb0f68a8a0e11df04a08d4018697379c28ec /gcc | |
parent | d41c8b4c43d7050f05668f23ad4563ed6e9b41d0 (diff) | |
download | gcc-4c926b8a613d7be44154c55a9dcaa6f2b84ea66e.zip gcc-4c926b8a613d7be44154c55a9dcaa6f2b84ea66e.tar.gz gcc-4c926b8a613d7be44154c55a9dcaa6f2b84ea66e.tar.bz2 |
mips.exp (mips_option_groups): Add -mframe-header-opt and -mno-frame-header-opt options.
2015-10-09 Steve Ellcey <sellcey@imgtec.com>
* gcc.target/mips/mips.exp (mips_option_groups): Add -mframe-header-opt
and -mno-frame-header-opt options.
* gcc.target/mips/frame-header-1.c: New file.
* gcc.target/mips/frame-header-2.c: New file.
* gcc.target/mips/frame-header-3.c: New file.
From-SVN: r228667
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/frame-header-1.c | 21 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/frame-header-2.c | 21 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/frame-header-3.c | 22 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/mips.exp | 1 |
5 files changed, 73 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 929bfa5..d73a902 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2015-10-09 Steve Ellcey <sellcey@imgtec.com> + + * gcc.target/mips/mips.exp (mips_option_groups): Add -mframe-header-opt + and -mno-frame-header-opt options. + * gcc.target/mips/frame-header-1.c: New file. + * gcc.target/mips/frame-header-2.c: New file. + * gcc.target/mips/frame-header-3.c: New file. + 2015-10-09 Andre Vieira <andre.simoesdiasvieira@arm.com> Hale Wang <hale.wang@arm.com> diff --git a/gcc/testsuite/gcc.target/mips/frame-header-1.c b/gcc/testsuite/gcc.target/mips/frame-header-1.c new file mode 100644 index 0000000..971656d --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/frame-header-1.c @@ -0,0 +1,21 @@ +/* Verify that we do not optimize away the frame header in foo when using + -mno-frame-header-opt by checking the stack pointer increment done in + that function. Without the optimization foo should increment the stack + by 24 bytes, with the optimization it would only be 8 bytes. */ + +/* { dg-do compile } */ +/* { dg-options "-mno-frame-header-opt -mabi=32 -mno-abicalls" } */ +/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */ +/* { dg-final { scan-assembler "\taddiu\t\\\$sp,\\\$sp,-24" } } */ + +NOMIPS16 void __attribute__((noinline)) +bar (int* a) +{ + *a = 1; +} + +NOMIPS16 void +foo (int a) +{ + bar (&a); +} diff --git a/gcc/testsuite/gcc.target/mips/frame-header-2.c b/gcc/testsuite/gcc.target/mips/frame-header-2.c new file mode 100644 index 0000000..0e86bc9 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/frame-header-2.c @@ -0,0 +1,21 @@ +/* Verify that we do optimize away the frame header in foo when using + -mframe-header-opt by checking the stack pointer increment done in + that function. Without the optimization foo should increment the + stack by 24 bytes, with the optimization it would only be 8 bytes. */ + +/* { dg-do compile } */ +/* { dg-options "-mframe-header-opt -mabi=32 -mno-abicalls" } */ +/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */ +/* { dg-final { scan-assembler "\taddiu\t\\\$sp,\\\$sp,-8" } } */ + +NOMIPS16 void __attribute__((noinline)) +bar (int* a) +{ + *a = 1; +} + +NOMIPS16 void +foo (int a) +{ + bar (&a); +} diff --git a/gcc/testsuite/gcc.target/mips/frame-header-3.c b/gcc/testsuite/gcc.target/mips/frame-header-3.c new file mode 100644 index 0000000..2a8c515 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/frame-header-3.c @@ -0,0 +1,22 @@ +/* Verify that we do not optimize away the frame header in foo when using + -mframe-header-opt but are calling a weak function that may be overridden + by a different function that does need the frame header. Without the + optimization foo should increment the stack by 24 bytes, with the + optimization it would only be 8 bytes. */ + +/* { dg-do compile } */ +/* { dg-options "-mframe-header-opt -mabi=32 -mno-abicalls" } */ +/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */ +/* { dg-final { scan-assembler "\taddiu\t\\\$sp,\\\$sp,-24" } } */ + +NOMIPS16 void __attribute__((noinline, weak)) +bar (int* a) +{ + *a = 1; +} + +void +NOMIPS16 foo (int a) +{ + bar (&a); +} diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp index 42e7fff..0f2d6a2 100644 --- a/gcc/testsuite/gcc.target/mips/mips.exp +++ b/gcc/testsuite/gcc.target/mips/mips.exp @@ -256,6 +256,7 @@ set mips_option_groups { maddps "HAS_MADDPS" lsa "(|!)HAS_LSA" section_start "-Wl,--section-start=.*" + frame-header "-mframe-header-opt|-mno-frame-header-opt" } for { set option 0 } { $option < 32 } { incr option } { |