/* 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);
}