]>
Commit | Line | Data |
---|---|---|
3b2488ca L |
1 | /* Test for stack alignment when PREFERRED_STACK_BOUNDARY < alignment |
2 | of local variable. */ | |
3 | /* { dg-do compile } */ | |
4 | /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=6" } */ | |
5 | /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-128,\[\\t \]*%\[re\]?sp" } } */ | |
6 | /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ | |
4f4b0ab8 | 7 | /* { dg-skip-if "Options about stack-boundary aren't support" { x86_64-*-mingw* } } */ |
3b2488ca L |
8 | |
9 | #include <stddef.h> | |
10 | ||
11 | #define ALIGNMENT 128 | |
bae980b1 | 12 | |
3b2488ca L |
13 | typedef int aligned __attribute__((aligned(ALIGNMENT))); |
14 | extern void abort(void); | |
15 | ||
6136d2c7 | 16 | __attribute__ ((noinline)) |
3b2488ca L |
17 | void check(void * a) |
18 | { | |
19 | if (((ptrdiff_t)a & (ALIGNMENT-1)) != 0) | |
20 | abort(); | |
21 | } | |
22 | ||
23 | int main() | |
24 | { | |
25 | aligned a = 1; | |
26 | check(&a); | |
27 | return 0; | |
28 | } |