forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s
 | |
| // PR3459
 | |
| struct bar {
 | |
|   char n[1];
 | |
| };
 | |
| 
 | |
| struct foo {
 | |
|   char name[(int)&((struct bar *)0)->n];
 | |
|   char name2[(int)&((struct bar *)0)->n - 1]; //expected-error{{array size is negative}}
 | |
| };
 | |
| 
 | |
| // PR3430
 | |
| struct s {
 | |
|   struct st {
 | |
|     int v;
 | |
|   } *ts;
 | |
| };
 | |
| 
 | |
| struct st;
 | |
| 
 | |
| int foo() {
 | |
|   struct st *f;
 | |
|   return f->v + f[0].v;
 | |
| }
 | |
| 
 | |
| // PR3642, PR3671
 | |
| struct pppoe_tag {
 | |
|  short tag_type;
 | |
|  char tag_data[];
 | |
| };
 | |
| struct datatag {
 | |
|   struct pppoe_tag hdr; //expected-warning{{field 'hdr' with variable sized type 'struct pppoe_tag' not at the end of a struct or class is a GNU extension}}
 | |
|   char data;
 | |
| };
 | |
| 
 | |
| 
 | |
| // PR4092
 | |
| struct s0 {
 | |
|   char a;  // expected-note {{previous declaration is here}}
 | |
|   char a;  // expected-error {{duplicate member 'a'}}
 | |
| };
 | |
| 
 | |
| struct s0 f0(void) {}
 | |
| 
 | |
| // <rdar://problem/8177927> - This previously triggered an assertion failure.
 | |
| struct x0 {
 | |
|   unsigned int x1;
 | |
| };
 | |
| 
 | |
| // rdar://problem/9150338
 | |
| static struct test1 { // expected-warning {{'static' ignored on this declaration}}
 | |
|   int x;
 | |
| };
 | |
| const struct test2 { // expected-warning {{'const' ignored on this declaration}}
 | |
|   int x;
 | |
| };
 | |
| inline struct test3 { // expected-warning {{'inline' ignored on this declaration}}
 | |
|   int x;
 | |
| };
 |