Make unsafePerformIO lazy
Make unsafePerformIO lazy

The stricteness analyser used to have a HACK which ensured that NOINLNE things
were not strictness-analysed.  The reason was unsafePerformIO. Left to itself,
the strictness analyser would discover this strictness for unsafePerformIO:
	unsafePerformIO:  C(U(AV))
But then consider this sub-expression
	unsafePerformIO (\s -> let r = f x in 
			       case writeIORef v r s of (# s1, _ #) ->
			       (# s1, r #)
The strictness analyser will now find that r is sure to be eval'd,
and may then hoist it out.  This makes tests/lib/should_run/memo002
deadlock.

Solving this by making all NOINLINE things have no strictness info is overkill.
In particular, it's overkill for runST, which is perfectly respectable.
Consider
	f x = runST (return x)
This should be strict in x.

So the new plan is to define unsafePerformIO using the 'lazy' combinator:

	unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)

Remember, 'lazy' is a wired-in identity-function Id, of type a->a, which is 
magically NON-STRICT, and is inlined after strictness analysis.  So
unsafePerformIO will look non-strict, and that's what we want.


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