1// No PCH: 2// RUN: %clang_cc1 -pedantic -std=c++1y -include %s -include %s -verify %s 3// 4// With chained PCH: 5// RUN: %clang_cc1 -pedantic -std=c++1y -emit-pch %s -o %t.a 6// RUN: %clang_cc1 -pedantic -std=c++1y -include-pch %t.a -emit-pch %s -o %t.b 7// RUN: %clang_cc1 -pedantic -std=c++1y -include-pch %t.b -verify %s 8 9// expected-no-diagnostics 10 11#if !defined(HEADER1) 12#define HEADER1 13 14auto &f(int &); 15 16template<typename T> decltype(auto) g(T &t) { 17 return f(t); 18} 19 20#elif !defined(HEADER2) 21#define HEADER2 22 23// Ensure that this provides an update record for the type of HEADER1's 'f', 24// so that HEADER1's 'g' can successfully call it. 25auto &f(int &n) { 26 return n; 27} 28 29#else 30 31int n; 32int &k = g(n); 33 34#endif 35