| // RUN: %clang_cc1 -emit-llvm-only -triple x86_64-pc-windows-gnu -verify %s |
| |
| struct { |
| int a; |
| } |
| // expected-note@+1 {{conflicting attribute is here}} |
| __attribute__((gcc_struct)) |
| // expected-error@+1 {{'ms_struct' and 'gcc_struct' attributes are not compatible}} |
| __attribute__((ms_struct)) |
| t1; |
| |
| struct { |
| int a; |
| } |
| // expected-note@+1 {{conflicting attribute is here}} |
| __attribute__((ms_struct)) |
| // expected-error@+1 {{'gcc_struct' and 'ms_struct' attributes are not compatible}} |
| __attribute__((gcc_struct)) |
| t2; |
| |
| #pragma ms_struct on |
| struct { |
| int a; |
| } |
| // No diagnostic for an attribute, unambiguously overriding the pragma. |
| __attribute__((gcc_struct)) |
| t3; |
| |
| struct { |
| int a; |
| } |
| // expected-note@+1 {{conflicting attribute is here}} |
| __attribute__((ms_struct)) |
| // expected-error@+1 {{'gcc_struct' and 'ms_struct' attributes are not compatible}} |
| __attribute__((gcc_struct)) |
| t4; |
| #pragma ms_struct off |