modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/alloca-1.c (about)

     1  /* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
     2  /* Verify that alloca storage is sufficiently aligned.  */
     3  /* ??? May fail if BIGGEST_ALIGNMENT > STACK_BOUNDARY.  Which, I guess
     4     can only happen on !STRICT_ALIGNMENT targets.  */
     5  
     6  typedef __SIZE_TYPE__ size_t;
     7  
     8  struct dummy { int x __attribute__((aligned)); };
     9  #define BIGGEST_ALIGNMENT __alignof__(struct dummy)
    10  
    11  _Bool foo(void)
    12  {
    13    char *p = __builtin_alloca(32);
    14    return ((size_t)p & (BIGGEST_ALIGNMENT - 1)) == 0;
    15  }
    16  
    17  int main()
    18  {
    19    if (!foo())
    20      abort ();
    21    return 0;
    22  }