Add has_side_effets to the raise# primop
authorSimon Peyton Jones <simonpj@microsoft.com>
Thu, 7 Aug 2014 06:56:28 +0000 (07:56 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Thu, 7 Aug 2014 08:55:18 +0000 (09:55 +0100)
According to the definition of has_side_effets in PrimOp,
raise# clearly has side effects!  In practice it makes little
difference becuase the fact that it returns bottom is more
important... but still it's better to say it right.

compiler/prelude/primops.txt.pp

index 4faa585..19cd812 100644 (file)
@@ -1881,6 +1881,11 @@ primop  RaiseOp "raise#" GenPrimOp
    strictness  = { \ _arity -> mkClosedStrictSig [topDmd] botRes }
       -- NB: result is bottom
    out_of_line = True
+   has_side_effects = True
+     -- raise# certainly throws a Haskell exception and hence has_side_effects
+     -- It doesn't actually make much difference because the fact that it
+     -- returns bottom independently ensures that we are careful not to discard
+     -- it.  But still, it's better to say the Right Thing.
 
 -- raiseIO# needs to be a primop, because exceptions in the IO monad
 -- must be *precise* - we don't want the strictness analyser turning