| // 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 *'}} |
| } |