[project @ 2000-10-12 11:47:25 by sewardj]
[ghc-hetmet.git] / ghc / compiler / prelude / PrimOp.lhs
index e6ced5a..7ebb079 100644 (file)
@@ -34,7 +34,7 @@ import Var            ( TyVar, Id )
 import CallConv                ( CallConv, pprCallConv )
 import Name            ( Name, mkWiredInIdName )
 import RdrName         ( RdrName, mkRdrQual )
-import OccName         ( OccName, pprOccName, mkSrcVarOcc )
+import OccName         ( OccName, pprOccName, mkVarOcc )
 import TyCon           ( TyCon, tyConArity )
 import Type            ( Type, mkForAllTys, mkFunTy, mkFunTys, mkTyVarTys,
                          mkTyConApp, typePrimRep,
@@ -134,10 +134,10 @@ data PrimOpInfo
                [Type] 
                Type 
 
-mkDyadic str  ty = Dyadic  (mkSrcVarOcc str) ty
-mkMonadic str ty = Monadic (mkSrcVarOcc str) ty
-mkCompare str ty = Compare (mkSrcVarOcc str) ty
-mkGenPrimOp str tvs tys ty = GenPrimOp (mkSrcVarOcc str) tvs tys ty
+mkDyadic str  ty = Dyadic  (mkVarOcc str) ty
+mkMonadic str ty = Monadic (mkVarOcc str) ty
+mkCompare str ty = Compare (mkVarOcc str) ty
+mkGenPrimOp str tvs tys ty = GenPrimOp (mkVarOcc str) tvs tys ty
 \end{code}
 
 %************************************************************************
@@ -365,7 +365,7 @@ See also @primOpIsCheap@ (below).
 primOpOkForSpeculation :: PrimOp -> Bool
        -- See comments with CoreUtils.exprOkForSpeculation
 primOpOkForSpeculation op 
-  = not (primOpCanFail op || primOpHasSideEffects op || primOpOutOfLine op)
+  = primOpIsCheap op && not (primOpCanFail op)
 \end{code}
 
 
@@ -543,7 +543,8 @@ getPrimOpResultInfo op
        let rep = typePrimRep ty in
        case rep of
           PtrRep -> case splitAlgTyConApp_maybe ty of
-                       Nothing -> panic "getPrimOpResultInfo"
+                       Nothing -> pprPanic "getPrimOpResultInfo" 
+                                            (ppr ty <+> ppr op)
                        Just (tc,_,_) -> ReturnsAlg tc
           other -> ReturnsPrim other
 \end{code}