56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
// RUN: %clang_cc1 -fsyntax-only -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 ignored}}
 | 
						|
                   unsigned long bf_1 : 12;
 | 
						|
                   unsigned long : 0;
 | 
						|
                   unsigned long bf_2 : 12;
 | 
						|
} __attribute__((ms_struct)) t2;
 | 
						|
 | 
						|
 | 
						|
// 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];
 | 
						|
 |