| // RUN: %clang_cc1 -fsyntax-only -verify -triple bpf-pc-linux-gnu %s |
| |
| #define __pso __attribute__((preserve_static_offset)) |
| |
| // These are correct usages. |
| struct foo { int a; } __pso; |
| union quux { int a; } __pso; |
| struct doug { int a; } __pso __attribute__((packed)); |
| |
| // Rest are incorrect usages. |
| typedef int bar __pso; // expected-error{{attribute only applies to}} |
| struct goo { |
| int a __pso; // expected-error{{attribute only applies to}} |
| }; |
| int g __pso; // expected-error{{attribute only applies to}} |
| __pso void ffunc1(void); // expected-error{{attribute only applies to}} |
| void ffunc2(int a __pso); // expected-error{{attribute only applies to}} |
| void ffunc3(void) { |
| int a __pso; // expected-error{{attribute only applies to}} |
| } |
| |
| struct buz { int a; } __attribute__((preserve_static_offset("hello"))); // \ |
| expected-error{{attribute takes no arguments}} |