summaryrefslogtreecommitdiff
path: root/ghc/compiler/prelude/PrelNames.lhs
diff options
context:
space:
mode:
authorsimonmar <unknown>2003-01-24 14:04:41 +0000
committersimonmar <unknown>2003-01-24 14:04:41 +0000
commitb429adbb230a10427a833073f6e7502b6e5da7fd (patch)
tree0cf7abd6e32ebe52942c4c7182987ccfd4a92944 /ghc/compiler/prelude/PrelNames.lhs
parent519c3db41ba9017ab2e124b4575ae12667b53881 (diff)
downloadhaskell-b429adbb230a10427a833073f6e7502b6e5da7fd.tar.gz
[project @ 2003-01-24 14:04:40 by simonmar]
- Generalise seq to allow an unlifted type in its second argument. This works because seq is *always* inlined and replaced by a case. - Remove getTag, a wired-in Id with an unfolding, with a definition in GHC.Base: getTag x = x `seq` dataToTag# x this is why we required the above generalisation to seq (dataToTag# returns an Int#). See the comments in GHC.Base for more details. - As a side-effect, this fixes a bug in the interpreter, where the compiler optimised away the evaluation of the argument to dataToTag#, but the interpreter ended up passing it an unevaluated thunk (nullary constructors aren't always evaluated in GHCi, but the simplifier assumes they are). Now, in the interpreter, getTag won't be inlined so the compiler can't optimise away the evaluation, and we're saved. The real bug here is either (a) dataToTag# requires an evaluated argument or (b) the interpreter doesn't supply it with one, take your pick.
Diffstat (limited to 'ghc/compiler/prelude/PrelNames.lhs')
-rw-r--r--ghc/compiler/prelude/PrelNames.lhs5
1 files changed, 1 insertions, 4 deletions
diff --git a/ghc/compiler/prelude/PrelNames.lhs b/ghc/compiler/prelude/PrelNames.lhs
index 4aa78af44c..fef42d1654 100644
--- a/ghc/compiler/prelude/PrelNames.lhs
+++ b/ghc/compiler/prelude/PrelNames.lhs
@@ -318,8 +318,6 @@ mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ','
%************************************************************************
\begin{code}
-getTag_RDR = nameRdrName getTagName
-
eq_RDR = nameRdrName eqName
ge_RDR = nameRdrName geName
ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
@@ -387,6 +385,7 @@ plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
+getTag_RDR = varQual_RDR pREL_BASE_Name FSLIT("getTag")
succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
@@ -479,7 +478,6 @@ threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadI
cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
-getTagName = wVarQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
@@ -873,7 +871,6 @@ parrDataConKey = mkPreludeDataConUnique 24
\begin{code}
absentErrorIdKey = mkPreludeMiscIdUnique 1
-getTagIdKey = mkPreludeMiscIdUnique 2
augmentIdKey = mkPreludeMiscIdUnique 3
appendIdKey = mkPreludeMiscIdUnique 4
buildIdKey = mkPreludeMiscIdUnique 5