/* PR c/7652 */
/* { dg-do compile } */
/* { dg-options "-Wall -Wextra -Wno-unused -Wno-implicit-fallthrough" } */

extern void bar (int);
void
fn (int i)
{
  switch (i)
  {
  case 1:
    bar (1);
    __attribute__((used));
    /* { dg-warning "empty declaration" "" { target c } .-1 } */
    /* { dg-warning "ignored" "" { target c++ } .-2 } */
  case 2:
    bar (1);
    __attribute__((foo));
    /* { dg-warning "empty declaration" "" { target c } .-1 } */
    /* { dg-warning "ignored" "" { target c++ } .-2 } */
  case 3:
    bar (1);
    __attribute__((fallthrough)) /* { dg-warning "not followed" "" { target c } } */
  case 4: /* { dg-error "expected" } */
    bar (1);
    __attribute__((fallthrough)) 1;
    /* { dg-error "expected" "" { target c } .-1 } */
    /* { dg-warning "not followed" "" { target *-*-* } .-2 } */
  case 5:
    bar (1);
    __attribute__((fallthrough)) int i; /* { dg-warning "ignored|not followed" } */
  case 6:
    bar (1);
    __attribute__((fallthrough ("x"))); /* { dg-warning "specified with a parameter" } */
  case 7:
    bar (1);
    __attribute__((fallthrough, fallthrough)); /* { dg-warning "specified multiple times" } */
  case 8:
    bar (1);
    __attribute__((fallthrough));
  case 9:
    __attribute__((fallthrough));
    /* { dg-warning "not preceding" "" { target *-*-* } .-1 } */
    bar (1);
  case 10:
    bar (1);
    __attribute__((unused, fallthrough)); /* { dg-warning "attribute ignored" } */
  case 11:
    bar (1);
    __attribute__((fallthrough, unused)); /* { dg-warning "attribute ignored" } */
  default:
    bar (99);
  }
}
