Commit e8b4f75a authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Eliminate over-zealous warning in CoreToStg

parent 75ba47fa
......@@ -563,9 +563,15 @@ coreToStgArgs (arg : args) -- Non-type argument
let
arg_ty = exprType arg
stg_arg_ty = stgArgType stg_arg
bad_args = (isUnLiftedType arg_ty && not (isUnLiftedType stg_arg_ty))
|| (typePrimRep arg_ty /= typePrimRep stg_arg_ty)
-- In GHCi we coerce an argument of type BCO# (unlifted) to HValue (lifted),
-- and pass it to a function expecting an HValue (arg_ty). This is ok because
-- we can treat an unlifted value as lifted. But the other way round
-- we complain.
-- We also want to check if a pointer is cast to a non-ptr etc
in
WARN( isUnLiftedType arg_ty /= isUnLiftedType stg_arg_ty,
ptext SLIT("Dangerous-looking argument. Probable cause: bad unsafeCoerce#") $$ ppr arg)
WARN( bad_args, ptext SLIT("Dangerous-looking argument. Probable cause: bad unsafeCoerce#") $$ ppr arg )
returnLne (stg_arg : stg_args, fvs)
......
......@@ -475,6 +475,7 @@ data PrimRep
| AddrRep -- a pointer, but not to a Haskell value
| FloatRep
| DoubleRep
deriving( Eq )
-- Size of a PrimRep, in bytes
sizeofPrimRep :: PrimRep -> Int
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment