| /* Functional tests for the "target" attribute and pragma. */ |
| |
| /* { dg-do compile } */ |
| /* { dg-require-effective-target target_attribute } */ |
| /* { dg-options "-mno-packed-stack" } */ |
| |
| extern void foo(void); |
| |
| #pragma GCC target("packed-stack") |
| int p1(void) |
| { |
| foo(); |
| return 1; |
| } |
| #pragma GCC reset_options |
| |
| #pragma GCC target("no-packed-stack") |
| int p0(void) |
| { |
| foo(); |
| return 2; |
| } |
| int p0b(void) |
| { |
| foo(); |
| return 2; |
| } |
| #pragma GCC reset_options |
| |
| __attribute__ ((target("packed-stack"))) |
| int a1(void) |
| { |
| foo(); |
| return 4; |
| } |
| |
| __attribute__ ((target("packed-stack"))) |
| int a1b(void) |
| { |
| foo(); |
| return 4; |
| } |
| |
| __attribute__ ((target("packed-stack"))) |
| int a1c(void) |
| { |
| foo(); |
| return 4; |
| } |
| |
| __attribute__ ((target("packed-stack"))) |
| int a1d(void) |
| { |
| foo(); |
| return 4; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0b(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0c(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0d(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0e(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0f(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0g(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| __attribute__ ((target("no-packed-stack"))) |
| int a0h(void) |
| { |
| foo(); |
| return 8; |
| } |
| |
| /* { dg-final { scan-assembler-times "\t.cfi_offset 15, -40" 10 { target { lp64 } } } } */ |
| /* { dg-final { scan-assembler-times "\t.cfi_offset 15, -8" 5 { target { lp64 } } } } */ |
| /* { dg-final { scan-assembler-times "\t.cfi_offset 15, -36" 10 { target { ! lp64 } } } } */ |
| /* { dg-final { scan-assembler-times "\t.cfi_offset 15, -4" 5 { target { ! lp64 } } } } */ |