llvm-project/clang/test/Sema/vector-assign.c
Chris Lattner 9bad62c72a Merge all the 'assignment' diagnostic code into one routine, decloning
it from several places.  This merges the diagnostics, making them more
uniform and fewer in number. This also simplifies and cleans up the code.

Some highlights:
1. This removes a bunch of very-similar diagnostics.
2. This renames AssignmentCheckResult -> AssignConvertType
3. This merges PointerFromInt + IntFromPointer which were always treated the same.
4. This updates a bunch of test cases that have minor changes to the produced diagnostics.

llvm-svn: 45589
2008-01-04 18:04:52 +00:00

40 lines
1.6 KiB
C

// RUN: clang %s -verify -fsyntax-only -flax-vector-conversions
typedef unsigned int v2u __attribute__ ((vector_size (8)));
typedef signed int v2s __attribute__ ((vector_size (8)));
typedef signed int v1s __attribute__ ((vector_size (4)));
typedef float v2f __attribute__ ((vector_size(8)));
typedef signed short v4ss __attribute__ ((vector_size (8)));
void f() {
v2s v1;
v2u v2;
v1s v3;
v2f v4;
v4ss v5;
v1 = v2;
v1 = v3; // expected-error {{incompatible type assigning 'v1s', expected 'v2s'}}
v1 = v4; // expected-error {{incompatible type assigning 'v2f', expected 'v2s'}}
v1 = v5;
v2 = v1;
v2 = v3; // expected-error {{incompatible type assigning 'v1s', expected 'v2u'}}
v2 = v4; // expected-error {{incompatible type assigning 'v2f', expected 'v2u'}}
v2 = v5;
v3 = v1; // expected-error {{incompatible type assigning 'v2s', expected 'v1s'}}
v3 = v2; // expected-error {{incompatible type assigning 'v2u', expected 'v1s'}}
v3 = v4; // expected-error {{incompatible type assigning 'v2f', expected 'v1s'}}
v3 = v5; // expected-error {{incompatible type assigning 'v4ss', expected 'v1s'}}
v4 = v1; // expected-error {{incompatible type assigning 'v2s', expected 'v2f'}}
v4 = v2; // expected-error {{incompatible type assigning 'v2u', expected 'v2f'}}
v4 = v3; // expected-error {{incompatible type assigning 'v1s', expected 'v2f'}}
v4 = v5; // expected-error {{incompatible type assigning 'v4ss', expected 'v2f'}}
v5 = v1;
v5 = v2;
v5 = v3; // expected-error {{incompatible type assigning 'v1s', expected 'v4ss'}}
v5 = v4; // expected-error {{incompatible type assigning 'v2f', expected 'v4ss'}}
}