[project @ 2000-02-10 18:39:51 by lewie]
[ghc-hetmet.git] / ghc / compiler / basicTypes / Const.lhs
index dd0bda4..22fa7f8 100644 (file)
@@ -46,6 +46,10 @@ import Util          ( thenCmp )
 import Ratio           ( numerator, denominator )
 import FastString      ( uniqueOfFS )
 import Char            ( ord )
+
+#if __GLASGOW_HASKELL__ >= 404
+import GlaExts         ( fromInt )
+#endif
 \end{code}
 
 
@@ -124,9 +128,11 @@ conIsTrivial (Literal lit) = not (isNoRepLit lit)
 conIsTrivial (PrimOp _)    = False
 conIsTrivial con          = True
 
--- conIsCheap is true for constants whose applications we are willing
+-- conIsCheap is true for constants whose *work* we are willing
 -- to duplicate in exchange for some modest gain.  cf CoreUtils.exprIsCheap
-conIsCheap (Literal lit) = not (isNoRepLit lit)
+conIsCheap (Literal lit) = True                -- Even no-rep lits are cheap; we don't end
+                                       -- up duplicating their work if we push them inside
+                                       -- a lambda, because we float them to the top in the end
 conIsCheap (DataCon con) = True
 conIsCheap (PrimOp op)   = primOpIsCheap op