PmCheck: Only ever check constantly many models against a single pattern
Introduces a new flag -fmax-pmcheck-deltas
to achieve that. Deprecates
the old -fmax-pmcheck-iter
mechanism in favor of this new flag.
From the user's guide:
Pattern match checking can be exponential in some cases. This limit makes sure
we scale polynomially in the number of patterns, by forgetting refined
information gained from a partially successful match. For example, when
matching x
against Just 4
, we split each incoming matching model into two
sub-models: One where x
is not Nothing
and one where x
is Just y
but
y
is not 4
. When the number of incoming models exceeds the limit, we
continue checking the next clause with the original, unrefined model.