/* Test for stack alignment when PREFERRED_STACK_BOUNDARY < alignment of local variable. */ /* { dg-do compile } */ /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=6" } */ /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-128,\[\\t \]*%\[re\]?sp" } } */ /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ /* { dg-skip-if "Options about stack-boundary aren't support" { x86_64-*-mingw* } { "*" } { "" } } */ #include #define ALIGNMENT 128 typedef int aligned __attribute__((aligned(ALIGNMENT))); extern void abort(void); __attribute__ ((noinline)) void check(void * a) { if (((ptrdiff_t)a & (ALIGNMENT-1)) != 0) abort(); } int main() { aligned a = 1; check(&a); return 0; }