Fix Trac #3437: strictness of specialised functions
Fix Trac #3437: strictness of specialised functions

'lilac' helpful pin-pointed a space leak that was due to a specialised
function being insufficiently strict.  Here's the new comment in SpecConstr:

Note [Transfer strictness]
~~~~~~~~~~~~~~~~~~~~~~~~~~
We must transfer strictness information from the original function to
the specialised one.  Suppose, for example

  f has strictness     SS
        and a RULE     f (a:as) b = f_spec a as b

Now we want f_spec to have strictess  LLS, otherwise we'll use call-by-need
when calling f_spec instead of call-by-value.  And that can result in 
unbounded worsening in space (cf the classic foldl vs foldl')

See Trac #3437 for a good example.

The function calcSpecStrictness performs the calculation.



vikraman/ghc,ghc-android/ghc,gcampax/ghc,mettekou/ghc,mettekou/ghc,mcschroeder/ghc,vikraman/ghc,vikraman/ghc,gcampax/ghc,AlexanderPankiv/ghc,mfine/ghc,da-x/ghc,ilyasergey/GHC-XAppFix,vikraman/ghc,lukexi/ghc,forked-upstream-packages-for-ghcjs/ghc,snoyberg/ghc,oldmanmike/ghc,christiaanb/ghc,vTurbine/ghc,jstolarek/ghc,elieux/ghc,tjakway/ghcjvm,ml9951/ghc,lukexi/ghc-7.8-arm64,sgillespie/ghc,sdiehl/ghc,ezyang/ghc,tjakway/ghcjvm,nushio3/ghc,sgillespie/ghc,nkaretnikov/ghc,mettekou/ghc,vTurbine/ghc,mfine/ghc,ml9951/ghc,mcschroeder/ghc,GaloisInc/halvm-ghc,gridaphobe/ghc,vikraman/ghc,gcampax/ghc,urbanslug/ghc,anton-dessiatov/ghc,nathyong/microghc-ghc,fmthoma/ghc,wxwxwwxxx/ghc,mcschroeder/ghc,frantisekfarka/ghc-dsi,ryantm/ghc,holzensp/ghc,fmthoma/ghc,mfine/ghc,nushio3/ghc,fmthoma/ghc,mcschroeder/ghc,sdiehl/ghc,nushio3/ghc,siddhanathan/ghc,TomMD/ghc,holzensp/ghc,nkaretnikov/ghc,nomeata/ghc,bitemyapp/ghc,frantisekfarka/ghc-dsi,sgillespie/ghc,christiaanb/ghc,oldmanmike/ghc,anton-dessiatov/ghc,oldmanmike/ghc,GaloisInc/halvm-ghc,tibbe/ghc,gridaphobe/ghc,olsner/ghc,christiaanb/ghc,olsner/ghc,siddhanathan/ghc,jstolarek/ghc,elieux/ghc,tibbe/ghc,ekmett/ghc,tjakway/ghcjvm,da-x/ghc,TomMD/ghc,vTurbine/ghc,ml9951/ghc,frantisekfarka/ghc-dsi,mcmaniac/ghc,mcschroeder/ghc,lukexi/ghc-7.8-arm64,gridaphobe/ghc,bitemyapp/ghc,ekmett/ghc,ml9951/ghc,TomMD/ghc,urbanslug/ghc,AlexanderPankiv/ghc,nkaretnikov/ghc,sdiehl/ghc,TomMD/ghc,GaloisInc/halvm-ghc,sgillespie/ghc,ilyasergey/GHC-XAppFix,tibbe/ghc,spacekitteh/smcghc,ml9951/ghc,oldmanmike/ghc,olsner/ghc,forked-upstream-packages-for-ghcjs/ghc,elieux/ghc,ezyang/ghc,green-haskell/ghc,nushio3/ghc,acowley/ghc,snoyberg/ghc,wxwxwwxxx/ghc,snoyberg/ghc,nomeata/ghc,nkaretnikov/ghc,hferreiro/replay,urbanslug/ghc,vikraman/ghc,ghc-android/ghc,shlevy/ghc,urbanslug/ghc,sdiehl/ghc,nomeata/ghc,christiaanb/ghc,GaloisInc/halvm-ghc,shlevy/ghc,GaloisInc/halvm-ghc,hferreiro/replay,green-haskell/ghc,anton-dessiatov/ghc,forked-upstream-packages-for-ghcjs/ghc,forked-upstream-packages-for-ghcjs/ghc,ezyang/ghc,mfine/ghc,ryantm/ghc,TomMD/ghc,wxwxwwxxx/ghc,shlevy/ghc,nathyong/microghc-ghc,holzensp/ghc,sgillespie/ghc,mcmaniac/ghc,fmthoma/ghc,nomeata/ghc,jstolarek/ghc,mcmaniac/ghc,ghc-android/ghc,urbanslug/ghc,hferreiro/replay,fmthoma/ghc,vikraman/ghc,AlexanderPankiv/ghc,anton-dessiatov/ghc,snoyberg/ghc,mfine/ghc,gcampax/ghc,ryantm/ghc,nathyong/microghc-ghc,frantisekfarka/ghc-dsi,sdiehl/ghc,ezyang/ghc,urbanslug/ghc,da-x/ghc,mettekou/ghc,wxwxwwxxx/ghc,olsner/ghc,acowley/ghc,snoyberg/ghc,AlexanderPankiv/ghc,ezyang/ghc,anton-dessiatov/ghc,shlevy/ghc,olsner/ghc,AlexanderPankiv/ghc,oldmanmike/ghc,shlevy/ghc,fmthoma/ghc,ekmett/ghc,acowley/ghc,wxwxwwxxx/ghc,vTurbine/ghc,AlexanderPankiv/ghc,tjakway/ghcjvm,mettekou/ghc,tibbe/ghc,nomeata/ghc,hferreiro/replay,sgillespie/ghc,mettekou/ghc,forked-upstream-packages-for-ghcjs/ghc,acowley/ghc,nathyong/microghc-ghc,bitemyapp/ghc,bitemyapp/ghc,TomMD/ghc,da-x/ghc,lukexi/ghc,ghc-android/ghc,lukexi/ghc,hferreiro/replay,jstolarek/ghc,da-x/ghc,nathyong/microghc-ghc,anton-dessiatov/ghc,nkaretnikov/ghc,siddhanathan/ghc,gcampax/ghc,frantisekfarka/ghc-dsi,ml9951/ghc,spacekitteh/smcghc,sdiehl/ghc,wxwxwwxxx/ghc,jstolarek/ghc,nathyong/microghc-ghc,GaloisInc/halvm-ghc,tjakway/ghcjvm,green-haskell/ghc,ekmett/ghc,lukexi/ghc-7.8-arm64,mcschroeder/ghc,GaloisInc/halvm-ghc,da-x/ghc,mcmaniac/ghc,ezyang/ghc,vTurbine/ghc,lukexi/ghc-7.8-arm64,elieux/ghc,nathyong/microghc-ghc,mfine/ghc,da-x/ghc,nushio3/ghc,gcampax/ghc,spacekitteh/smcghc,nkaretnikov/ghc,fmthoma/ghc,forked-upstream-packages-for-ghcjs/ghc,lukexi/ghc,sgillespie/ghc,siddhanathan/ghc,ghc-android/ghc,elieux/ghc,lukexi/ghc-7.8-arm64,oldmanmike/ghc,nushio3/ghc,snoyberg/ghc,vTurbine/ghc,tjakway/ghcjvm,mcmaniac/ghc,siddhanathan/ghc,urbanslug/ghc,hferreiro/replay,ghc-android/ghc,sdiehl/ghc,anton-dessiatov/ghc,oldmanmike/ghc,nushio3/ghc,spacekitteh/smcghc,ryantm/ghc,forked-upstream-packages-for-ghcjs/ghc,ezyang/ghc,christiaanb/ghc,acowley/ghc,ekmett/ghc,ryantm/ghc,green-haskell/ghc,hferreiro/replay,nkaretnikov/ghc,mfine/ghc,christiaanb/ghc,ilyasergey/GHC-XAppFix,snoyberg/ghc,ml9951/ghc,gcampax/ghc,holzensp/ghc,gridaphobe/ghc,bitemyapp/ghc,siddhanathan/ghc,olsner/ghc,mcschroeder/ghc,acowley/ghc,christiaanb/ghc,acowley/ghc,shlevy/ghc,vTurbine/ghc,ml9951/ghc,green-haskell/ghc,tibbe/ghc,elieux/ghc,lukexi/ghc,siddhanathan/ghc,wxwxwwxxx/ghc,holzensp/ghc,gridaphobe/ghc,olsner/ghc,AlexanderPankiv/ghc,gridaphobe/ghc,spacekitteh/smcghc,elieux/ghc,ghc-android/ghc,gridaphobe/ghc,shlevy/ghc,tjakway/ghcjvm,mettekou/ghc,ilyasergey/GHC-XAppFix,TomMD/ghc