// Test this without pch. // RUN: clang-cc -include %S/struct.h -fsyntax-only -verify %s // Test with pch. // RUN: clang-cc -emit-pch -o %t %S/struct.h && // RUN: clang-cc -include-pch %t -fsyntax-only -verify %s struct Point *p1; float getX(struct Point *p1) { return p1->x; } void *get_fun_ptr() { return fun->is_ptr? fun->ptr : 0; } struct Fun2 { int very_fun; }; int get_very_fun() { return fun2->very_fun; } int *int_ptr_fail = &fun->is_ptr; // expected-error{{address of bit-field requested}} /* FIXME: DeclContexts aren't yet able to find "struct Nested" nested within "struct S", so causing the following to fail. When not using PCH, this works because Sema puts the nested struct onto the declaration chain for its identifier, where C/Objective-C always look. To fix the problem, we either need to give DeclContexts a way to keep track of declarations that are visible without having to build a full lookup table, or we need PCH files to read the declaration chains. */ /* struct Nested nested = { 1, 2 }; */