74 lines
1.6 KiB
C
74 lines
1.6 KiB
C
// Test this without pch.
|
|
// RUN: %clang_cc1 -fblocks -include %S/types.h -fsyntax-only -verify %s
|
|
|
|
// Test with pch.
|
|
// RUN: %clang_cc1 -emit-pch -fblocks -o %t %S/types.h
|
|
// RUN: %clang_cc1 -fblocks -include-pch %t -fsyntax-only -verify %s -ast-print
|
|
|
|
typedef int INT;
|
|
INT int_value;
|
|
|
|
__attribute__((address_space(1))) int int_as_one;
|
|
|
|
// TYPE_EXT_QUAL
|
|
ASInt *as_int_ptr1 = &int_value; // expected-error{{changes address space of pointer}}
|
|
ASInt *as_int_ptr2 = &int_as_one;
|
|
|
|
// TYPE_COMPLEX
|
|
_Complex float Cfloat_val;
|
|
Cfloat *Cfloat_ptr = &Cfloat_val;
|
|
|
|
// TYPE_ATOMIC
|
|
_Atomic(int) AtomicInt_val;
|
|
AtomicInt *AtomicInt_ptr = &AtomicInt_val;
|
|
|
|
// TYPE_POINTER
|
|
int_ptr int_value_ptr = &int_value;
|
|
|
|
// TYPE_BLOCK_POINTER
|
|
void test_block_ptr(Block *bl) {
|
|
*bl = ^(int x, float f) { return x; };
|
|
}
|
|
|
|
// TYPE_CONSTANT_ARRAY
|
|
five_ints fvi = { 1, 2, 3, 4, 5 };
|
|
|
|
// TYPE_INCOMPLETE_ARRAY
|
|
float_array fa1 = { 1, 2, 3 };
|
|
float_array fa2 = { 1, 2, 3, 4, 5, 6, 7, 8 };
|
|
|
|
// TYPE_VARIABLE_ARRAY in stmts.[ch]
|
|
|
|
// TYPE_VECTOR
|
|
float4 f4 = { 1.0, 2.0, 3.0, 4.0 };
|
|
|
|
// TYPE_EXT_VECTOR
|
|
ext_float4 ef4 = { 1.0, 2.0, 3.0, 4.0 };
|
|
|
|
// TYPE_FUNCTION_NO_PROTO
|
|
noproto np1;
|
|
int np1(x, y)
|
|
int x;
|
|
float y;
|
|
{
|
|
return x;
|
|
}
|
|
|
|
// TYPE_FUNCTION_PROTO
|
|
proto p1;
|
|
float p1(float x, float y, ...) {
|
|
return x + y;
|
|
}
|
|
proto *p2 = p1;
|
|
|
|
// TYPE_TYPEDEF
|
|
int_ptr_ptr ipp = &int_value_ptr;
|
|
|
|
// TYPE_TYPEOF_EXPR
|
|
typeof_17 *t17 = &int_value;
|
|
struct S { int x, y; };
|
|
typeof_17 t17_2 = (struct S){1, 2}; // expected-error{{initializing 'typeof_17' (aka 'int') with an expression of incompatible type 'struct S'}}
|
|
|
|
// TYPE_TYPEOF
|
|
int_ptr_ptr2 ipp2 = &int_value_ptr;
|