Call Arity: Trade precision for performance in large mutually recursive groups
Call Arity: Trade precision for performance in large mutually recursive groups

Sometimes (especial with derived Data instances, it seems), one can have
very large mutually recursive bindings. Calculating the Call Arity
analysis result with full precision is an expensive operation in these
case. So above a certain threshold (25, for no good reason besides
intuition), skip this calculation and assume the recursion is not
linear, which is a conservative result.

With this, the Call Arity analysis accounts for 3.7% of the compile time
of haskell-src-exts. Fixes #10293

Differential Revision: https://phabricator.haskell.org/D843

nushio3/ghc,oldmanmike/ghc,acowley/ghc,wxwxwwxxx/ghc,snoyberg/ghc,snoyberg/ghc,elieux/ghc,vikraman/ghc,shlevy/ghc,AlexanderPankiv/ghc,vikraman/ghc,ezyang/ghc,vTurbine/ghc,sdiehl/ghc,sgillespie/ghc,vikraman/ghc,snoyberg/ghc,mcschroeder/ghc,ghc-android/ghc,GaloisInc/halvm-ghc,ml9951/ghc,ghc-android/ghc,fmthoma/ghc,vikraman/ghc,vTurbine/ghc,fmthoma/ghc,anton-dessiatov/ghc,nushio3/ghc,da-x/ghc,sdiehl/ghc,vikraman/ghc,gridaphobe/ghc,oldmanmike/ghc,siddhanathan/ghc,anton-dessiatov/ghc,vikraman/ghc,ghc-android/ghc,mcschroeder/ghc,sgillespie/ghc,siddhanathan/ghc,da-x/ghc,wxwxwwxxx/ghc,ml9951/ghc,fmthoma/ghc,GaloisInc/halvm-ghc,tjakway/ghcjvm,TomMD/ghc,AlexanderPankiv/ghc,urbanslug/ghc,snoyberg/ghc,fmthoma/ghc,gridaphobe/ghc,AlexanderPankiv/ghc,mfine/ghc,gridaphobe/ghc,TomMD/ghc,urbanslug/ghc,elieux/ghc,nkaretnikov/ghc,da-x/ghc,ml9951/ghc,sgillespie/ghc,sdiehl/ghc,mcschroeder/ghc,siddhanathan/ghc,shlevy/ghc,vTurbine/ghc,sdiehl/ghc,olsner/ghc,gridaphobe/ghc,da-x/ghc,mettekou/ghc,mfine/ghc,acowley/ghc,GaloisInc/halvm-ghc,anton-dessiatov/ghc,ml9951/ghc,olsner/ghc,acowley/ghc,elieux/ghc,mettekou/ghc,ezyang/ghc,acowley/ghc,christiaanb/ghc,mettekou/ghc,mfine/ghc,wxwxwwxxx/ghc,nushio3/ghc,mfine/ghc,mettekou/ghc,christiaanb/ghc,tjakway/ghcjvm,ezyang/ghc,TomMD/ghc,shlevy/ghc,tjakway/ghcjvm,fmthoma/ghc,sgillespie/ghc,anton-dessiatov/ghc,sgillespie/ghc,mettekou/ghc,vTurbine/ghc,da-x/ghc,vTurbine/ghc,sgillespie/ghc,sdiehl/ghc,oldmanmike/ghc,wxwxwwxxx/ghc,anton-dessiatov/ghc,siddhanathan/ghc,ml9951/ghc,oldmanmike/ghc,shlevy/ghc,ezyang/ghc,anton-dessiatov/ghc,nkaretnikov/ghc,shlevy/ghc,olsner/ghc,olsner/ghc,nushio3/ghc,ml9951/ghc,GaloisInc/halvm-ghc,acowley/ghc,GaloisInc/halvm-ghc,GaloisInc/halvm-ghc,AlexanderPankiv/ghc,ghc-android/ghc,wxwxwwxxx/ghc,tjakway/ghcjvm,wxwxwwxxx/ghc,christiaanb/ghc,AlexanderPankiv/ghc,tjakway/ghcjvm,ghc-android/ghc,urbanslug/ghc,shlevy/ghc,urbanslug/ghc,nkaretnikov/ghc,elieux/ghc,vTurbine/ghc,ezyang/ghc,TomMD/ghc,gridaphobe/ghc,acowley/ghc,olsner/ghc,oldmanmike/ghc,mfine/ghc,ml9951/ghc,christiaanb/ghc,oldmanmike/ghc,elieux/ghc,urbanslug/ghc,sgillespie/ghc,siddhanathan/ghc,AlexanderPankiv/ghc,elieux/ghc,snoyberg/ghc,nkaretnikov/ghc,AlexanderPankiv/ghc,mfine/ghc,nkaretnikov/ghc,ezyang/ghc,urbanslug/ghc,mcschroeder/ghc,tjakway/ghcjvm,gridaphobe/ghc,sdiehl/ghc,christiaanb/ghc,snoyberg/ghc,vikraman/ghc,siddhanathan/ghc,acowley/ghc,gridaphobe/ghc,nkaretnikov/ghc,ml9951/ghc,christiaanb/ghc,shlevy/ghc,GaloisInc/halvm-ghc,da-x/ghc,vTurbine/ghc,nushio3/ghc,olsner/ghc,wxwxwwxxx/ghc,tjakway/ghcjvm,fmthoma/ghc,siddhanathan/ghc,oldmanmike/ghc,snoyberg/ghc,elieux/ghc,ezyang/ghc,TomMD/ghc,TomMD/ghc,nushio3/ghc,mcschroeder/ghc,ghc-android/ghc,da-x/ghc,nkaretnikov/ghc,fmthoma/ghc,mettekou/ghc,mettekou/ghc,anton-dessiatov/ghc,olsner/ghc,nushio3/ghc,TomMD/ghc,sdiehl/ghc,christiaanb/ghc,ghc-android/ghc,mfine/ghc,urbanslug/ghc,mcschroeder/ghc,mcschroeder/ghc