1 // RUN: %clang_cc1 %s -verify -fsyntax-only -Wvector-conversions
2 typedef unsigned int v2u
__attribute__ ((vector_size (8)));
3 typedef signed int v2s
__attribute__ ((vector_size (8)));
4 typedef signed int v1s
__attribute__ ((vector_size (4)));
5 typedef float v2f
__attribute__ ((vector_size(8)));
6 typedef signed short v4ss
__attribute__ ((vector_size (8)));
15 v1
= v2
; // expected-warning {{incompatible vector types assigning to 'v2s' from 'v2u'}}
16 v1
= v3
; // expected-error {{assigning to 'v2s' from incompatible type 'v1s'}}
17 v1
= v4
; // expected-warning {{incompatible vector types assigning to 'v2s' from 'v2f'}}
18 v1
= v5
; // expected-warning {{incompatible vector types assigning to 'v2s' from 'v4ss'}}
20 v2
= v1
; // expected-warning {{incompatible vector types assigning to 'v2u' from 'v2s'}}
21 v2
= v3
; // expected-error {{assigning to 'v2u' from incompatible type 'v1s'}}
22 v2
= v4
; // expected-warning {{incompatible vector types assigning to 'v2u' from 'v2f'}}
23 v2
= v5
; // expected-warning {{incompatible vector types assigning to 'v2u' from 'v4ss'}}
25 v3
= v1
; // expected-error {{assigning to 'v1s' from incompatible type 'v2s'}}
26 v3
= v2
; // expected-error {{assigning to 'v1s' from incompatible type 'v2u'}}
27 v3
= v4
; // expected-error {{assigning to 'v1s' from incompatible type 'v2f'}}
28 v3
= v5
; // expected-error {{assigning to 'v1s' from incompatible type 'v4ss'}}
30 v4
= v1
; // expected-warning {{incompatible vector types assigning to 'v2f' from 'v2s'}}
31 v4
= v2
; // expected-warning {{incompatible vector types assigning to 'v2f' from 'v2u'}}
32 v4
= v3
; // expected-error {{assigning to 'v2f' from incompatible type 'v1s'}}
33 v4
= v5
; // expected-warning {{incompatible vector types assigning to 'v2f' from 'v4ss'}}
35 v5
= v1
; // expected-warning {{incompatible vector types assigning to 'v4ss' from 'v2s'}}
36 v5
= v2
; // expected-warning {{incompatible vector types assigning to 'v4ss' from 'v2u'}}
37 v5
= v3
; // expected-error {{assigning to 'v4ss' from incompatible type 'v1s'}}
38 v5
= v4
; // expected-warning {{incompatible vector types assigning to 'v4ss' from 'v2f'}}
42 float test2(__attribute__((vector_size(16))) float a
, int b
) {
47 typedef long long __attribute__((__vector_size__(2 * sizeof(long long))))
50 void test3a(longlongvec
*); // expected-note{{passing argument to parameter here}}
51 void test3(const unsigned *src
) {
52 test3a(src
); // expected-warning {{incompatible pointer types passing 'const unsigned int *' to parameter of type 'longlongvec *'}}