17a614d8380297fcd2bc23986241905d97222948cRichard Smith// Test this without pch. 2762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -DSOURCE -fsyntax-only -emit-llvm -o - %s 37a614d8380297fcd2bc23986241905d97222948cRichard Smith 47a614d8380297fcd2bc23986241905d97222948cRichard Smith// Test with pch. 5762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -emit-pch -o %t %s 6762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -include-pch %t -fsyntax-only -emit-llvm -o - %s 77a614d8380297fcd2bc23986241905d97222948cRichard Smith 87a614d8380297fcd2bc23986241905d97222948cRichard Smith#ifdef HEADER 97a614d8380297fcd2bc23986241905d97222948cRichard Smithint n; 107a614d8380297fcd2bc23986241905d97222948cRichard Smithstruct S { 117a614d8380297fcd2bc23986241905d97222948cRichard Smith int *p = &m; 127a614d8380297fcd2bc23986241905d97222948cRichard Smith int &m = n; 137a614d8380297fcd2bc23986241905d97222948cRichard Smith S *that = this; 147a614d8380297fcd2bc23986241905d97222948cRichard Smith}; 15ca5233044ef679840d1ad1c46a36b16e2ee8a6e1Richard Smithtemplate<typename T> struct X { T t {0}; }; 167a614d8380297fcd2bc23986241905d97222948cRichard Smith#endif 177a614d8380297fcd2bc23986241905d97222948cRichard Smith 187a614d8380297fcd2bc23986241905d97222948cRichard Smith#ifdef SOURCE 197a614d8380297fcd2bc23986241905d97222948cRichard SmithS s; 20ca5233044ef679840d1ad1c46a36b16e2ee8a6e1Richard Smith 21ca5233044ef679840d1ad1c46a36b16e2ee8a6e1Richard Smithstruct E { explicit E(int); }; 22ca5233044ef679840d1ad1c46a36b16e2ee8a6e1Richard SmithX<E> x; 237a614d8380297fcd2bc23986241905d97222948cRichard Smith#elif HEADER 247a614d8380297fcd2bc23986241905d97222948cRichard Smith#undef HEADER 257a614d8380297fcd2bc23986241905d97222948cRichard Smith#define SOURCE 267a614d8380297fcd2bc23986241905d97222948cRichard Smith#endif 27