1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
  
     | 
    
      // 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;
}
 
     |