/* { dg-do link } */
/* { dg-options "-O2" } */

extern void link_error (void);

typedef unsigned char(*Calculable)(void);

static unsigned char one() { return 1; }
static unsigned char two() { return 2; }

static int
print(Calculable calculate)
{
  return calculate() + calculate() + 1;
}

int
main()
{
  /* Make sure we perform indirect inlining of one and two and optimize
     the result to a constant.  */
  for (int i = 0; i < 100; i++)
    {
      if (print(one) != 3)
	link_error ();
      if (print(two) != 5)
	link_error ();
    }
  return 0;
}
