cvs commit: fptools/ghc/compiler/absCSyn AbsCUtils.lhs fptools/ghc/compiler/basicTypes
DataCon.lhs Demand.lhs Id.lhs MkId.lhs UniqSupply.lhs Unique.lhs
fptools/ghc/compiler/coreSyn Subst.lhs fptools/ghc/compiler/deSugar
DsMonad.lhs DsUtils.lhs Match.lhs fptools/ghc/compiler/hsSyn ...
Simon Peyton Jones
simonpj@glass.cse.ogi.edu
Fri, 18 May 2001 01:46:22 -0700
simonpj 2001/05/18 01:46:22 PDT
Modified files:
ghc/compiler/absCSyn AbsCUtils.lhs
ghc/compiler/basicTypes DataCon.lhs Demand.lhs Id.lhs MkId.lhs
UniqSupply.lhs Unique.lhs
ghc/compiler/coreSyn Subst.lhs
ghc/compiler/deSugar DsMonad.lhs DsUtils.lhs Match.lhs
ghc/compiler/hsSyn HsDecls.lhs
ghc/compiler/main HscTypes.lhs MkIface.lhs
ghc/compiler/parser ParseUtil.lhs Parser.y
ghc/compiler/prelude TysWiredIn.lhs
ghc/compiler/rename ParseIface.y RnBinds.lhs RnEnv.lhs
RnHiFiles.lhs RnSource.lhs
ghc/compiler/simplCore SetLevels.lhs SimplMonad.lhs
Simplify.lhs
ghc/compiler/stranal WwLib.lhs
ghc/compiler/typecheck Inst.lhs TcClassDcl.lhs TcExpr.lhs
TcMonad.lhs TcTyDecls.lhs
ghc/compiler/types Generics.lhs
Log:
-----------------------------
Get unbox-strict-fields right
-----------------------------
The problem was that when a library was compiled *without* -funbox-strict-fields,
and the main program was compiled *with* that flag, we were wrongly treating
the fields of imported data types as unboxed.
To fix this I added an extra constructor to StrictnessMark to express whether
the "!" annotation came from an interface file (don't fiddle) or a source
file (decide whether to unbox).
On the way I tided things up:
* StrictnessMark moves to Demand.lhs, and doesn't have the extra DataCon
fields that kept it in DataCon before.
* HsDecls.BangType has one constructor, not three, with a StrictnessMark field.
* DataCon keeps track of its strictness signature (dcRepStrictness), but not
its "user strict marks" (which were never used)
* All the functions, like getUniquesDs, that used to take an Int saying how
many uniques to allocate, now return an infinite list. This saves arguments
and hassle. But it involved touching quite a few files.
* rebuildConArgs takes a list of Uniques to use as its unique supply. This
means I could combine DsUtils.rebuildConArgs with MkId.rebuildConArgs
(hooray; the main point of the previous change)
I also tidied up one or two error messages
Revision Changes Path
1.32 +3 -3 fptools/ghc/compiler/absCSyn/AbsCUtils.lhs
1.25 +54 -67 fptools/ghc/compiler/basicTypes/DataCon.lhs
1.13 +34 -0 fptools/ghc/compiler/basicTypes/Demand.lhs
1.87 +3 -8 fptools/ghc/compiler/basicTypes/Id.lhs
1.62 +55 -54 fptools/ghc/compiler/basicTypes/MkId.lhs
1.26 +6 -11 fptools/ghc/compiler/basicTypes/UniqSupply.lhs
1.62 +1 -11 fptools/ghc/compiler/basicTypes/Unique.lhs
1.24 +2 -2 fptools/ghc/compiler/coreSyn/Subst.lhs
1.39 +8 -8 fptools/ghc/compiler/deSugar/DsMonad.lhs
1.53 +9 -40 fptools/ghc/compiler/deSugar/DsUtils.lhs
1.49 +3 -3 fptools/ghc/compiler/deSugar/Match.lhs
1.66 +11 -17 fptools/ghc/compiler/hsSyn/HsDecls.lhs
1.74 +0 -7 fptools/ghc/compiler/main/HscTypes.lhs
1.130 +6 -8 fptools/ghc/compiler/main/MkIface.lhs
1.34 +2 -2 fptools/ghc/compiler/parser/ParseUtil.lhs
1.64 +11 -10 fptools/ghc/compiler/parser/Parser.y
1.71 +2 -1 fptools/ghc/compiler/prelude/TysWiredIn.lhs
1.105 +9 -8 fptools/ghc/compiler/rename/ParseIface.y
1.65 +0 -23 fptools/ghc/compiler/rename/RnBinds.lhs
1.118 +2 -5 fptools/ghc/compiler/rename/RnEnv.lhs
1.39 +4 -4 fptools/ghc/compiler/rename/RnHiFiles.lhs
1.121 +2 -10 fptools/ghc/compiler/rename/RnSource.lhs
1.47 +1 -1 fptools/ghc/compiler/simplCore/SetLevels.lhs
1.40 +4 -5 fptools/ghc/compiler/simplCore/SimplMonad.lhs
1.105 +10 -4 fptools/ghc/compiler/simplCore/Simplify.lhs
1.46 +4 -4 fptools/ghc/compiler/stranal/WwLib.lhs
1.78 +3 -3 fptools/ghc/compiler/typecheck/Inst.lhs
1.96 +10 -11 fptools/ghc/compiler/typecheck/TcClassDcl.lhs
1.97 +30 -40 fptools/ghc/compiler/typecheck/TcExpr.lhs
1.62 +3 -3 fptools/ghc/compiler/typecheck/TcMonad.lhs
1.76 +2 -8 fptools/ghc/compiler/typecheck/TcTyDecls.lhs
1.14 +0 -7 fptools/ghc/compiler/types/Generics.lhs