| // 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 |
| |
| // RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -emit-pch -fpch-instantiate-templates -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 |