diff options
Diffstat (limited to 'test/CodeGenCXX/pr29160.cpp')
-rw-r--r-- | test/CodeGenCXX/pr29160.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/CodeGenCXX/pr29160.cpp b/test/CodeGenCXX/pr29160.cpp new file mode 100644 index 000000000000..09cf2a637072 --- /dev/null +++ b/test/CodeGenCXX/pr29160.cpp @@ -0,0 +1,41 @@ +// RUN: %clang_cc1 -std=c++11 -triple i686-linux-gnu %s -o /dev/null -S -emit-llvm +// +// This test's failure mode is running ~forever. (For some value of "forever" +// that's greater than 25 minutes on my machine) + +template <typename... Ts> +struct Foo { + template <typename... T> + static void ignore() {} + Foo() { ignore<Ts...>(); } +}; + +struct Base { + Base(); + ~Base(); +}; + +#define STAMP(thiz, prev) using thiz = Foo< \ + prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, \ + prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, \ + prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev, prev \ + >; +STAMP(A, Base); +STAMP(B, A); +STAMP(C, B); +STAMP(D, C); +STAMP(E, D); +STAMP(F, E); +STAMP(G, F); +STAMP(H, G); +STAMP(I, H); +STAMP(J, I); +STAMP(K, J); +STAMP(L, K); +STAMP(M, L); +STAMP(N, M); +STAMP(O, N); +STAMP(P, O); +STAMP(Q, P); + +int main() { Q q; } |