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
This commit is contained in:
parent
d41c8b4c43
commit
4c926b8a61
@ -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>
|
||||
|
||||
|
21
gcc/testsuite/gcc.target/mips/frame-header-1.c
Normal file
21
gcc/testsuite/gcc.target/mips/frame-header-1.c
Normal file
@ -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);
|
||||
}
|
21
gcc/testsuite/gcc.target/mips/frame-header-2.c
Normal file
21
gcc/testsuite/gcc.target/mips/frame-header-2.c
Normal file
@ -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);
|
||||
}
|
22
gcc/testsuite/gcc.target/mips/frame-header-3.c
Normal file
22
gcc/testsuite/gcc.target/mips/frame-header-3.c
Normal file
@ -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);
|
||||
}
|
@ -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 } {
|
||||
|
Loading…
Reference in New Issue
Block a user