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