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