/* PR target/14533 */
/* { dg-do compile } */
/* { dg-options "-O2 -fpic" } */

void bar (char *, int);

extern char b[];
extern int d, e;
struct S
{
  struct S *m;
  int n;
} **g;

void
foo (int x, char *y)
{
  struct S *h;
  int k = 1, l;

again:
  for (h = *g; h != (struct S *) g; h = h->m)
    {
      if (k == 0 && h->n & 0x100000);
      l = y - b;
      if (e)
        bar (b, l);
      if (d)
        bar (b, l);
    }
  if (k)
    {
      k = 0;
      goto again;
    }
}
