mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-30 04:26:06 +00:00

This also clarifies some terminology used by the diagnostic (methods -> Objective-C methods, fields -> non-static data members, etc). Many of the tests needed to be updated in multiple places for the diagnostic wording tweaks. The first instance of the diagnostic for that attribute is fully specified and subsequent instances cut off the complete list (to make it easier if additional subjects are added in the future for the attribute). llvm-svn: 319002
64 lines
1.3 KiB
C
64 lines
1.3 KiB
C
// RUN: %clang_cc1 -fsyntax-only -fms-extensions -verify -triple x86_64-apple-darwin9 %s
|
|
|
|
#pragma ms_struct on
|
|
|
|
#pragma ms_struct off
|
|
|
|
#pragma ms_struct reset
|
|
|
|
#pragma ms_struct // expected-warning {{incorrect use of '#pragma ms_struct on|off' - ignored}}
|
|
|
|
#pragma ms_struct on top of spaghetti // expected-warning {{extra tokens at end of '#pragma ms_struct' - ignored}}
|
|
|
|
struct foo
|
|
{
|
|
int a;
|
|
int b;
|
|
char c;
|
|
};
|
|
|
|
|
|
struct {
|
|
unsigned long bf_1 : 12;
|
|
unsigned long : 0;
|
|
unsigned long bf_2 : 12;
|
|
} __attribute__((__ms_struct__)) t1;
|
|
|
|
struct S {
|
|
double __attribute__((ms_struct)) d; // expected-warning {{'ms_struct' attribute only applies to structs, unions, and classes}}
|
|
unsigned long bf_1 : 12;
|
|
unsigned long : 0;
|
|
unsigned long bf_2 : 12;
|
|
} __attribute__((ms_struct)) t2;
|
|
|
|
enum
|
|
{
|
|
A = 0,
|
|
B,
|
|
C
|
|
} __attribute__((ms_struct)) e1; // expected-warning {{'ms_struct' attribute only applies to}}
|
|
|
|
// rdar://10513599
|
|
#pragma ms_struct on
|
|
|
|
typedef struct
|
|
{
|
|
void *pv;
|
|
int l;
|
|
} Foo;
|
|
|
|
typedef struct
|
|
{
|
|
void *pv1;
|
|
Foo foo;
|
|
unsigned short fInited : 1;
|
|
void *pv2;
|
|
} PackOddity;
|
|
|
|
#pragma ms_struct off
|
|
|
|
static int arr[sizeof(PackOddity) == 40 ? 1 : -1];
|
|
|
|
struct __declspec(ms_struct) bad { // expected-warning {{__declspec attribute 'ms_struct' is not supported}}
|
|
};
|