/* PR tree-optimization/86741 - ICE in -Warray-bounds indexing into
   an object of incomplete type
   { dg-do compile }
   { dg-options "-O2 -Wall" }  */

struct S
{
  int s;
};

void f (void);

void test_void (void)
{
  extern void v;
  struct S *b = (struct S*)&v;
  if (b->s)
    f ();
}

void test_incomplete_enum (void)
{
  extern enum E e;
  struct S *b = (struct S*)&e;
  if (b->s)
    f ();
}

void test_func (void)
{
  struct S *b = (struct S*)&f;
  if (b->s)
    f ();
}

/* { dg-prune-output "taking address of expression of type .void." } */
