forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 -verify -ffixed-point %s
 | |
| 
 | |
| void func() {
 | |
|   _Bool b;
 | |
|   char c;
 | |
|   int i;
 | |
|   float f;
 | |
|   double d;
 | |
|   double _Complex dc;
 | |
|   int _Complex ic;
 | |
|   struct S {
 | |
|     int i;
 | |
|   } s;
 | |
|   enum E {
 | |
|     A
 | |
|   } e;
 | |
|   int *ptr;
 | |
|   typedef int int_t;
 | |
|   int_t i2;
 | |
| 
 | |
|   _Accum accum;
 | |
|   _Fract fract = accum; // ok
 | |
|   _Accum *accum_ptr;
 | |
| 
 | |
|   accum = f;       // expected-error{{conversion between fixed point and 'float' is not yet supported}}
 | |
|   accum = d;       // expected-error{{conversion between fixed point and 'double' is not yet supported}}
 | |
|   accum = dc;      // expected-error{{conversion between fixed point and '_Complex double' is not yet supported}}
 | |
|   accum = ic;      // expected-error{{conversion between fixed point and '_Complex int' is not yet supported}}
 | |
|   accum = s;       // expected-error{{assigning to '_Accum' from incompatible type 'struct S'}}
 | |
|   accum = ptr;     // expected-error{{assigning to '_Accum' from incompatible type 'int *'}}
 | |
|   accum_ptr = ptr; // expected-warning{{incompatible pointer types assigning to '_Accum *' from 'int *'}}
 | |
| 
 | |
|   f = accum;       // expected-error{{conversion between fixed point and 'float' is not yet supported}}
 | |
|   d = accum;       // expected-error{{conversion between fixed point and 'double' is not yet supported}}
 | |
|   dc = accum;      // expected-error{{conversion between fixed point and '_Complex double' is not yet supported}}
 | |
|   ic = accum;      // expected-error{{conversion between fixed point and '_Complex int' is not yet supported}}
 | |
|   s = accum;       // expected-error{{assigning to 'struct S' from incompatible type '_Accum'}}
 | |
|   ptr = accum;     // expected-error{{assigning to 'int *' from incompatible type '_Accum'}}
 | |
|   ptr = accum_ptr; // expected-warning{{incompatible pointer types assigning to 'int *' from '_Accum *'}}
 | |
| }
 |