/* { dg-do compile } */
/* { dg-options "-O2 -Wall" } */
/* { dg-require-effective-target indirect_jumps } */

#include <setjmp.h>

struct node
{
  struct node *next;
  char *name;
} *list;

struct node *list;
struct node *head (void);

jmp_buf *bar (void);

int baz (void)
{
  struct node *n;
  int varseen = 0;

  list = head ();
  for (n = list; n; n = n->next)
    {
      if (!varseen)
	varseen = 1;

      jmp_buf *buf = bar ();  /* { dg-bogus "may be used uninitialized" } */
      setjmp (*buf);
    }

  if (!varseen)
    return 0;
  return 1;
}
