blob: 0cd3d046ca0d97a878a8e25e8c94d4f88c11b5e2 [file] [log] [blame]
// 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 = b; // expected-error{{conversion between fixed point and '_Bool' is not yet supported}}
accum = i; // expected-error{{conversion between fixed point and 'int' is not yet supported}}
accum = i; // expected-error{{conversion between fixed point and 'int' is not yet supported}}
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 = e; // expected-error{{conversion between fixed point and 'enum E' is not yet supported}}
accum = ptr; // expected-error{{assigning to '_Accum' from incompatible type 'int *'}}
accum_ptr = ptr; // expected-warning{{incompatible pointer types assigning to '_Accum *' from 'int *'}}
accum = i2; // expected-error{{conversion between fixed point and 'int_t' (aka 'int') is not yet supported}}
c = accum; // expected-error{{conversion between fixed point and 'char' is not yet supported}}
i = accum; // expected-error{{conversion between fixed point and 'int' is not yet supported}}
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'}}
e = accum; // expected-error{{conversion between fixed point and 'enum E' is not yet supported}}
ptr = accum; // expected-error{{assigning to 'int *' from incompatible type '_Accum'}}
ptr = accum_ptr; // expected-warning{{incompatible pointer types assigning to 'int *' from '_Accum *'}}
i2 = accum; // expected-error{{conversion between fixed point and 'int' is not yet supported}}
}