/* builtin_return_address(n) with n>0 has always been troublesome.  */

/* { dg-do run } */
/* { dg-options "-O3 -fno-optimize-sibling-calls -mbackchain" } */

void *addr1;

extern void abort (void);

void * __attribute__((noinline))
foo1 ()
{
  addr1 = __builtin_return_address (2);
}

void * __attribute__((noinline))
foo2 ()
{
  foo1 ();
}

void * __attribute__((noinline))
foo3 ()
{
  foo2 ();
}

void __attribute__((noinline))
bar ()
{
  void *addr2;

  foo3 ();
  asm volatile ("basr  %0,0\n\t" : "=d" (addr2));
  /* basr is two bytes in length.  */
  if (addr2 - addr1 != 2)
    abort ();
}

int
main ()
{
  bar();
  return 0;
}
