Skip to content

Improve optimisation of pattern synonym matching

Currently GHC does a very poor job of optimising pattern matches which include pattern synonyms.

It would be good to modify sameGroup in compiler/deSugar/Match.hs to be a lot smarter about when it is safe to group two pattern matches together.

Grouping was originally disabled as it is a bit trickier than originally thought. See #11224 (closed) for details.

The rule was originally to group two pattern matches together PgSyn p1 and PgSyn p2 when p1 == p2. This rule wasn't safe when p1 had a polymorphic return type and thus could have a different type on each branch even though syntactically identical. A good solution to this ticket would come up with a smarter rule about when it is and isn't safe to group two together in the same spirit as the more complicated rules for view patterns.

Trac metadata
Trac field Value
Version 7.10.3
Type Task
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information