/* { dg-do compile } */
/* { dg-options "-O2 -Wall -ftrivial-auto-var-init=zero" } */

int g(int *);
int f()
{
    switch (0) { 
        int x;  /* { dg-bogus "statement will never be executed" } */
        default:
        return g(&x);
    }
}

int g1(int);
int f1()
{
    switch (0) {
        int x; /* { dg-bogus "statement will never be executed" } */
        default:
        return g1(x);  /* { dg-warning "is used uninitialized" } */
    }
}

struct S
{
  char a;
  int b;
};
int g2(int);
int f2(int input)
{
    switch (0) {
        struct S x; /* { dg-bogus "statement will never be executed" } */
        default:
        return g2(input) + x.b;  /* { dg-warning "is used uninitialized" } */
    }
}

