Lift constructor tag allocation out of a loop
[ghc.git] / testsuite / tests / perf / compiler / genManyConstructors
1 SIZE=10000
2 MODULE=ManyConstructors
3
4 # Generates a module with a large number of constructors that looks
5 # like this:
6 #
7 #   module ManyConstructors where
8 #
9 #   data A10000 = A0
10 #     | A00001
11 #     | A00002
12 #     ...
13 #     | A10000
14 #
15 # The point of this test is to check if we don't regress on #14657 reintroducing
16 # some code that's quadratic in the number of constructors in a data type.
17 # NB. This is not that artificial, I've seen data types of this size
18 # in the wild.
19
20 echo "module $MODULE where" > $MODULE.hs
21 echo >> $MODULE.hs
22 echo "data A$SIZE = A0" >> $MODULE.hs
23 for i in $(seq -w 1 $SIZE); do
24   echo "  | A$i" >> $MODULE.hs
25 done