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:
Steve Ellcey 2015-10-09 17:12:26 +00:00 committed by Steve Ellcey
parent d41c8b4c43
commit 4c926b8a61
5 changed files with 73 additions and 0 deletions

View File

@ -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>

View 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);
}

View 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);
}

View 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);
}

View File

@ -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 } {