/* This failed on s390x due to a back end bug.  */

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

typedef long unsigned int size_t;
typedef enum
{
  TYPE_SCHAR, TYPE_LONGDOUBLE
}
arg_type;

typedef struct
{
  arg_type type;
  union
  {
    signed char a_schar;
    long double a_longdouble;
  }
  a;
}
argument;

typedef struct
{
  argument *arg;
}
arguments;

int ind;

extern void foo (arguments *a);

void
bar ()
{
  arguments a;
  char *buf;
  char *result;
  int uninitialized;
  int count, i;
  int retcount;

  foo (&a);

  switch (a.arg[ind].type)
    {
    case TYPE_SCHAR:
      {
	if (uninitialized == 0)
	  __builtin___snprintf_chk (result, 10, 1, 10, buf, 1, &count);
      }
    case TYPE_LONGDOUBLE:
      {
	long double arg = a.arg[ind].a.a_longdouble;

	if (uninitialized == 0)
	  __builtin___snprintf_chk (result, 10, 1, 10, buf, arg, &count);
      }
    }
}


syntax highlighted by Code2HTML, v. 0.9.1