mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-29 16:29:00 -04:00

We never aka vector types because our attributed syntax for it is less comprehensible than the typedefs. This leaves the user in the dark when the typedef isn't named that well. Example: v2s v; v4f w; w = v; The naming in this cases isn't even that bad, but the error we give is useless without looking up the actual typedefs. t.c:6:5: error: assigning to 'v4f' from incompatible type 'v2s' Now: t.c:6:5: error: assigning to 'v4f' (vector of 4 'float' values) from incompatible type 'v2s' (vector of 2 'int' values) We do this for all diagnostics that print a vector type. llvm-svn: 207267
15 lines
823 B
Common Lisp
15 lines
823 B
Common Lisp
// RUN: %clang_cc1 -verify %s
|
|
|
|
typedef unsigned int uint4 __attribute((ext_vector_type(4)));
|
|
typedef int int4 __attribute((ext_vector_type(4)));
|
|
typedef int int3 __attribute((ext_vector_type(3)));
|
|
typedef unsigned uint3 __attribute((ext_vector_type(3)));
|
|
|
|
void vector_conv_invalid() {
|
|
uint4 u = (uint4)(1);
|
|
int4 i = u; // expected-error{{initializing 'int4' (vector of 4 'int' values) with an expression of incompatible type 'uint4' (vector of 4 'unsigned int' values)}}
|
|
int4 e = (int4)u; // expected-error{{invalid conversion between ext-vector type 'int4' (vector of 4 'int' values) and 'uint4' (vector of 4 'unsigned int' values)}}
|
|
|
|
uint3 u4 = (uint3)u; // expected-error{{invalid conversion between ext-vector type 'uint3' (vector of 3 'unsigned int' values) and 'uint4' (vector of 4 'unsigned int' values)}}
|
|
}
|