| // Test this without pch. | 
 | // RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -DSOURCE -fsyntax-only -emit-llvm -o - %s | 
 |  | 
 | // Test with pch. | 
 | // RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -emit-pch -o %t %s | 
 | // RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -include-pch %t -fsyntax-only -emit-llvm -o - %s  | 
 |  | 
 | #ifdef HEADER | 
 | int n; | 
 | struct S { | 
 |   int *p = &m; | 
 |   int &m = n; | 
 |   S *that = this; | 
 | }; | 
 | template<typename T> struct X { T t {0}; }; | 
 |  | 
 | struct v_t { }; | 
 |  | 
 | struct m_t | 
 | { | 
 |     struct { v_t v; }; | 
 |     m_t() { } | 
 | }; | 
 |  | 
 | #endif | 
 |  | 
 | #ifdef SOURCE | 
 | S s; | 
 |  | 
 | struct E { explicit E(int); }; | 
 | X<E> x; | 
 |  | 
 | m_t *test() { | 
 |   return new m_t; | 
 | } | 
 |  | 
 | #elif HEADER | 
 | #undef HEADER | 
 | #define SOURCE | 
 | #endif |