aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Sema/builtin_vectorelements.c
blob: 8f669075bcee5ac0e4903125bc1c9d1f4f1f0a20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// RUN: %clang_cc1 -triple aarch64 -fsyntax-only -verify -disable-llvm-passes %s

void test_builtin_vectorelements() {
  __builtin_vectorelements(int); // expected-error {{argument to __builtin_vectorelements must be of vector type}}
  __builtin_vectorelements(float); // expected-error {{argument to __builtin_vectorelements must be of vector type}}
  __builtin_vectorelements(long*); // expected-error {{argument to __builtin_vectorelements must be of vector type}}

  int a;
  __builtin_vectorelements(a); // expected-error {{argument to __builtin_vectorelements must be of vector type}}

  typedef int veci4 __attribute__((vector_size(16)));
  (void) __builtin_vectorelements(veci4);

  veci4 vec;
  (void) __builtin_vectorelements(vec);

  typedef veci4 some_other_vec;
  (void) __builtin_vectorelements(some_other_vec);

  struct Foo { int a; };
  __builtin_vectorelements(struct Foo); // expected-error {{argument to __builtin_vectorelements must be of vector type}}
}