1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only %s -verify -Wvector-conversions 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef long long t1 __attribute__ ((vector_size (8))); 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef char t2 __attribute__ ((vector_size (16))); 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef float t3 __attribute__ ((vector_size (16))); 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid f() 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{ 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao t1 v1; 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao t2 v2; 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao t3 v3; 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao v2 = (t2)v1; // -expected-error {{invalid conversion between vector type \ 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao't2' and 't1' of different size}} 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao v1 = (t1)v2; // -expected-error {{invalid conversion between vector type \ 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao't1' and 't2' of different size}} 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao v3 = (t3)v2; 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao v1 = (t1)(char *)10; // -expected-error {{invalid conversion between vector \ 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotype 't1' and scalar type 'char *'}} 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao v1 = (t1)(long long)10; 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao v1 = (t1)(short)10; // -expected-error {{invalid conversion between vector \ 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotype 't1' and integer type 'short' of different size}} 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao long long r1 = (long long)v1; 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao short r2 = (short)v1; // -expected-error {{invalid conversion between vector \ 27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotype 't1' and integer type 'short' of different size}} 28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao char *r3 = (char *)v1; // -expected-error {{invalid conversion between vector\ 29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao type 't1' and scalar type 'char *'}} 30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid f2(t2 X); // expected-note{{passing argument to parameter 'X' here}} 34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid f3(t3 Y) { 36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao f2(Y); // expected-warning {{incompatible vector types passing 't3' to parameter of type 't2'}} 37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 39