/* { dg-do run } */

#include <stdarg.h>
#include "check.h"

#ifndef ALIGNMENT
#define ALIGNMENT	64
#endif

typedef int aligned __attribute__((aligned(ALIGNMENT)));

int global;

void
bar (char *p, int size)
{
  __builtin_strncpy (p, "good", size);
}

class Base {};

struct A : virtual public Base
{
  A() {}
};

struct B {};

void
foo (const char *fmt, ...) throw (B,A)
{
  va_list arg;
  char *p;
  aligned i;
  int size;
  double x;

  va_start (arg, fmt);
  size = va_arg (arg, int);
  if (size != 5)
    abort ();
  p = (char *) __builtin_alloca (size + 1);

  x = va_arg (arg, double);
  if (x != 5.0)
    abort ();

  bar (p, size);
  if (__builtin_strncmp (p, "good", size) != 0)
    {
#ifdef DEBUG
      p[size] = '\0';
      printf ("Failed: %s != good\n", p);
#endif
      abort ();
    }

  if (check_int (&i,  __alignof__(i)) != i)
    abort ();

  throw A();

  va_end (arg);
}

int
main()
{
  try {	foo ("foo", 5, 5.0); }
  catch (A& a) { }
  return 0;
}
