1  /* { dg-do run } */
       2  /* { dg-skip-if "Stack alignment is too small" { hppa*-*-hpux* } } */
       3  /* { dg-require-effective-target alloca } */
       4  
       5  #include "check.h"
       6  
       7  #ifndef ALIGNMENT
       8  #define ALIGNMENT	64
       9  #endif
      10  
      11  typedef int aligned __attribute__((aligned(ALIGNMENT)));
      12  
      13  int global;
      14  
      15  void
      16  bar (char *p, int size)
      17  {
      18    __builtin_strncpy (p, "good", size);
      19  }
      20  
      21  static void
      22  inline __attribute__((always_inline))
      23  foo (int size)
      24  {
      25    char *p = __builtin_alloca (size + 1);
      26    aligned i;
      27  
      28    bar (p, size);
      29    if (__builtin_strncmp (p, "good", size) != 0)
      30      {
      31  #ifdef DEBUG
      32        p[size] = '\0';
      33        printf ("Failed: %s != good\n", p);
      34  #endif
      35        abort ();
      36      }
      37  
      38    if (check_int (&i,  __alignof__(i)) != i)
      39      abort ();
      40  }
      41  
      42  int
      43  main()
      44  {
      45    foo (5);
      46    return 0;
      47  }