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>
ignoreFoo9   static void ignore() {}
FooFoo10   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 
main()41 int main() { Q q; }
42