/* { dg-do run { target ia64-*-* } } */
/* { dg-options "-O2" } */

/* Test function descriptor access.  */

extern unsigned long *_GLOBAL_OFFSET_TABLE_;
extern void abort(void);

struct ia64_fdesc
{
  unsigned long func;
  unsigned long gp;
};

void
os_boot_rendez (void)
{
}

static int
check (unsigned long gp)
{
  return gp != (unsigned long) &_GLOBAL_OFFSET_TABLE_;
}

int
main (int argc, char **argv)
{
  int i;
  int res = 0;

  for (i = 0; i < 1; i++)
    res += check (((struct ia64_fdesc *) os_boot_rendez)->gp);
  if (res)
    abort ();
  return res;
}
