| // RUN: %clang_cc1 %s -triple=powerpc-apple-darwin8 -target-feature +altivec -verify -pedantic -fsyntax-only | 
 |  | 
 | typedef int v4 __attribute((vector_size(16))); | 
 | typedef short v8 __attribute((vector_size(16))); | 
 |  | 
 | v8 foo(void) {  | 
 |   v8 a; | 
 |   v4 b; | 
 |   a = (v8){4, 2}; | 
 |   b = (v4)(5, 6, 7, 8, 9); // expected-warning {{excess elements in vector initializer}} | 
 |   b = (v4)(5, 6, 8, 8.0f); | 
 |  | 
 |   vector int vi; | 
 |   vi = (vector int)(1); | 
 |   vi = (vector int)(1, 2);          // expected-error {{number of elements must be either one or match the size of the vector}} | 
 |   vi = (vector int)(1, 2, 3, 4); | 
 |   vi = (vector int)(1, 2, 3, 4, 5); // expected-warning {{excess elements in vector initializer}} | 
 |   vi = (vector int){1}; | 
 |   vi = (vector int){1, 2}; | 
 |   vi = (vector int){1, 2, 3, 4, 5}; // expected-warning {{excess elements in vector initializer}} | 
 |   vector float vf; | 
 |   vf = (vector float)(1.0); | 
 |  | 
 |   return (v8){0, 1, 2, 3, 1, 2, 3, 4}; | 
 |  | 
 |   // FIXME: test that (type)(fn)(args) still works with -maltivec | 
 |   // FIXME: test that c++ overloaded commas still work -maltivec | 
 | } | 
 |  | 
 | void __attribute__((__overloadable__)) f(v4 a) | 
 | { | 
 | } | 
 |  | 
 | void __attribute__((__overloadable__)) f(int a) | 
 | { | 
 | } | 
 |  | 
 | void test() | 
 | { | 
 |   v4 vGCC; | 
 |   vector int vAltiVec; | 
 |  | 
 |   f(vAltiVec); | 
 |   vGCC = vAltiVec; | 
 |   int res = vGCC > vAltiVec; | 
 |   vAltiVec = 0 ? vGCC : vGCC; | 
 | } |