]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Sema/types.c
Vendor import of clang release_30 branch r142614:
[FreeBSD/FreeBSD.git] / test / Sema / types.c
1 // RUN: %clang_cc1 %s -pedantic -verify -triple=x86_64-apple-darwin9
2
3 // rdar://6097662
4 typedef int (*T)[2];
5 restrict T x;
6
7 typedef int *S[2];
8 restrict S y; // expected-error {{restrict requires a pointer or reference ('S' (aka 'int *[2]') is invalid)}}
9
10
11
12 // int128_t is available.
13 int a() {
14   __int128_t s;
15   __uint128_t t;
16 }
17 // but not a keyword
18 int b() {
19   int __int128_t;
20   int __uint128_t;
21 }
22
23
24 // Array type merging should convert array size to whatever matches the target
25 // pointer size.
26 // rdar://6880874
27 extern int i[1LL];
28 int i[(short)1];
29
30 enum e { e_1 };
31 extern int j[sizeof(enum e)];  // expected-note {{previous definition}}
32 int j[42];   // expected-error {{redefinition of 'j' with a different type}}
33
34 // rdar://6880104
35 _Decimal32 x;  // expected-error {{GNU decimal type extension not supported}}
36
37
38 // rdar://6880951
39 int __attribute__ ((vector_size (8), vector_size (8))) v;  // expected-error {{invalid vector element type}}
40
41 void test(int i) {
42   char c = (char __attribute__((align(8)))) i; // expected-error {{'align' attribute ignored when parsing type}}
43 }
44
45 // http://llvm.org/PR11082
46 //
47 // FIXME: This may or may not be the correct approach (no warning or error),
48 // but large amounts of Linux and FreeBSD code need this attribute to not be
49 // a hard error in order to work correctly.
50 void test2(int i) {
51   char c = (char __attribute__((may_alias))) i;
52 }