Home | History | Annotate | Download | only in Sema
      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 }
     53