1 // RUN: %clang_cc1 -std=c++11 -triple i686-linux-gnu %s -o /dev/null -S -emit-llvm 2 // 3 // This test's failure mode is running ~forever. (For some value of "forever" 4 // that's greater than 25 minutes on my machine) 5 6 template <typename... Ts> 7 struct Foo { 8 template <typename... T> 9 static void ignore() {} 10 Foo() { ignore<Ts...>(); } 11 }; 12 13 struct Base { 14 Base(); 15 ~Base(); 16 }; 17 18 #define STAMP(thiz, prev) using thiz = Foo< \ 19 prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, \ 20 prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, \ 21 prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev \ 22 >; 23 STAMP(A, Base); 24 STAMP(B, A); 25 STAMP(C, B); 26 STAMP(D, C); 27 STAMP(E, D); 28 STAMP(F, E); 29 STAMP(G, F); 30 STAMP(H, G); 31 STAMP(I, H); 32 STAMP(J, I); 33 STAMP(K, J); 34 STAMP(L, K); 35 STAMP(M, L); 36 STAMP(N, M); 37 STAMP(O, N); 38 STAMP(P, O); 39 STAMP(Q, P); 40 41 int main() { Q q; } 42