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}; }; 16f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis 17f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidisstruct v_t { }; 18f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis 19f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidisstruct m_t 20f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis{ 21f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis struct { v_t v; }; 22f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis m_t() { } 23f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis}; 24f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis 257a614d8380297fcd2bc23986241905d97222948cRichard Smith#endif 267a614d8380297fcd2bc23986241905d97222948cRichard Smith 277a614d8380297fcd2bc23986241905d97222948cRichard Smith#ifdef SOURCE 287a614d8380297fcd2bc23986241905d97222948cRichard SmithS s; 29ca5233044ef679840d1ad1c46a36b16e2ee8a6e1Richard Smith 30ca5233044ef679840d1ad1c46a36b16e2ee8a6e1Richard Smithstruct E { explicit E(int); }; 31ca5233044ef679840d1ad1c46a36b16e2ee8a6e1Richard SmithX<E> x; 32f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis 33f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidism_t *test() { 34f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis return new m_t; 35f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis} 36f8f480ff1cba08ce7e93160546168f729c95804cArgyrios Kyrtzidis 377a614d8380297fcd2bc23986241905d97222948cRichard Smith#elif HEADER 387a614d8380297fcd2bc23986241905d97222948cRichard Smith#undef HEADER 397a614d8380297fcd2bc23986241905d97222948cRichard Smith#define SOURCE 407a614d8380297fcd2bc23986241905d97222948cRichard Smith#endif 41