1 // PERMUTE_ARGS:
2 // Generate \sum_{i=0}^{14} 2^i = 32767 template instantiations
3 // (each with 3 sections) to use more than 64Ki sections in total.
version(Win32)4 version (Win32)
5 {
6     // Apparently omf or optlink does not support more than 32767 symbols.
7     void main()
8     {
9     }
10 }
11 else
12 {
foo(size_t i,size_t mask)13     size_t foo(size_t i, size_t mask)()
14     {
15         static if (i == 14)
16             return mask;
17         else
18             return foo!(i + 1, mask) + foo!(i + 1, mask | (1UL << i));
19     }
20 
main()21     void main()
22     {
23         assert(foo!(0, 0) != 0);
24     }
25 }
26