Commit 5b7c931a authored by simonpj's avatar simonpj
Browse files

[project @ 2003-02-20 13:00:24 by simonpj]

Eliminate bogus string-literal duplication
parent d5aa9c5d
......@@ -8,7 +8,8 @@ module Literal
( Literal(..) -- Exported to ParseIface
, mkMachInt, mkMachWord
, mkMachInt64, mkMachWord64
, isLitLitLit, maybeLitLit, litSize, litIsDupable,
, isLitLitLit, maybeLitLit, litSize
, litIsDupable, litIsTrivial
, literalType, literalPrimRep
, hashLiteral
......@@ -282,9 +283,17 @@ isLitLitLit _ = False
maybeLitLit (MachLitLit s t) = Just (s,t)
maybeLitLit _ = Nothing
litIsTrivial :: Literal -> Bool
-- True if there is absolutely no penalty to duplicating the literal
-- c.f. CoreUtils.exprIsTrivial
-- False principally of strings
litIsTrivial (MachStr _) = False
litIsTrivial other = True
litIsDupable :: Literal -> Bool
-- True if code space does not go bad if we duplicate this literal
-- False principally of strings
-- True if code space does not go bad if we duplicate this literal
-- c.f. CoreUtils.exprIsDupable
-- Currently we treat it just like litIsTrivial
litIsDupable (MachStr _) = False
litIsDupable other = True
......
......@@ -45,7 +45,7 @@ import PprCore ( pprCoreExpr )
import Var ( Var, isId, isTyVar )
import VarEnv
import Name ( hashName )
import Literal ( hashLiteral, literalType, litIsDupable, isZeroLit )
import Literal ( hashLiteral, literalType, litIsDupable, litIsTrivial, isZeroLit )
import DataCon ( DataCon, dataConRepArity, dataConArgTys, isExistentialDataCon, dataConTyCon )
import PrimOp ( PrimOp(..), primOpOkForSpeculation, primOpIsCheap )
import Id ( Id, idType, globalIdDetails, idNewStrictness,
......@@ -326,7 +326,7 @@ saturating them.
\begin{code}
exprIsTrivial (Var v) = True -- See notes above
exprIsTrivial (Type _) = True
exprIsTrivial (Lit lit) = True
exprIsTrivial (Lit lit) = litIsTrivial lit
exprIsTrivial (App e arg) = not (isRuntimeArg arg) && exprIsTrivial e
exprIsTrivial (Note _ e) = exprIsTrivial e
exprIsTrivial (Lam b body) = not (isRuntimeVar b) && exprIsTrivial body
......
Markdown is supported
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