Krzysztof Gogolewski pushed to branch wip/krzysztof-cleanup at Glasgow Haskell Compiler / GHC

Commits:

8 changed files:

Changes:

  • compiler/GHC/CoreToStg.hs
    ... ... @@ -425,13 +425,11 @@ coreToStgExpr expr@(App _ _)
    425 425
     coreToStgExpr expr@(Lam _ _)
    
    426 426
       = let
    
    427 427
             (args, body) = myCollectBinders expr
    
    428
    -    in
    
    429
    -    case filterStgBinders args of
    
    430
    -
    
    431
    -      [] -> coreToStgExpr body
    
    428
    +    in assertPpr
    
    429
    +         (null (filterStgBinders args))
    
    430
    +         (text "coreToStgExpr: unexpected value lambda: " $$ ppr expr)
    
    431
    +         (coreToStgExpr body)
    
    432 432
     
    
    433
    -      _ -> pprPanic "coretoStgExpr" $
    
    434
    -        text "Unexpected value lambda:" $$ ppr expr
    
    435 433
     
    
    436 434
     coreToStgExpr (Tick tick expr)
    
    437 435
       = do
    

  • compiler/GHC/Stg/Unarise.hs
    ... ... @@ -391,7 +391,7 @@ import GHC.Types.Basic
    391 391
     import GHC.Core
    
    392 392
     import GHC.Core.DataCon
    
    393 393
     import GHC.Core.TyCon
    
    394
    -import GHC.Data.FastString (FastString, mkFastString, fsLit)
    
    394
    +import GHC.Data.FastString (FastString, fsLit)
    
    395 395
     import GHC.Types.Id
    
    396 396
     import GHC.Types.Literal
    
    397 397
     import GHC.Core.Make (aBSENT_SUM_FIELD_ERROR_ID)
    
    ... ... @@ -681,7 +681,7 @@ elimCase rho args bndr (MultiValAlt _) [GenStgAlt{ alt_con = _
    681 681
     
    
    682 682
     elimCase rho args@(tag_arg : real_args) bndr (MultiValAlt _) alts
    
    683 683
       | isUnboxedSumBndr bndr
    
    684
    -  = do tag_bndr <- mkId (mkFastString "tag") tagTy
    
    684
    +  = do tag_bndr <- mkId (fsLit "tag") tagTy
    
    685 685
               -- this won't be used but we need a binder anyway
    
    686 686
            let rho1 = extendRho rho bndr (MultiVal args)
    
    687 687
                scrut' = case tag_arg of
    
    ... ... @@ -871,10 +871,9 @@ mapSumIdBinders alt_bndr args rhs rho0
    871 871
           --           text "rhs" <+> ppr rhs $$
    
    872 872
           --           text "rhs_with_casts" <+> ppr rhs_with_casts
    
    873 873
           --           ) $
    
    874
    -    if isMultiValBndr alt_bndr
    
    875
    -      then return (extendRho rho0 alt_bndr (MultiVal typed_id_args), rhs_with_casts rhs)
    
    876
    -      else assert (typed_id_args `lengthIs` 1) $
    
    877
    -            return (extendRho rho0 alt_bndr (UnaryVal (head typed_id_args)), rhs_with_casts rhs)
    
    874
    +    case typed_id_args of
    
    875
    +      [arg] -> return (extendRho rho0 alt_bndr (UnaryVal arg), rhs_with_casts rhs)
    
    876
    +      _ -> return (extendRho rho0 alt_bndr (MultiVal typed_id_args), rhs_with_casts rhs)
    
    878 877
     
    
    879 878
     -- Convert the argument to the given type, and wrap the conversion
    
    880 879
     -- around the given expression. Use the given Id as a name for the
    
    ... ... @@ -923,7 +922,7 @@ mkUbxSum dc ty_args args0 us
    923 922
       = let
    
    924 923
           _ :| sum_slots = ubxSumRepType ty_args
    
    925 924
           -- drop tag slot
    
    926
    -      field_slots = (mapMaybe (repSlotTy . stgArgRep) args0)
    
    925
    +      field_slots = (mapMaybe (repSlotTy . stgArgRep1) args0)
    
    927 926
           tag = dataConTag dc
    
    928 927
           layout'  = layoutUbxSum sum_slots field_slots
    
    929 928
     
    
    ... ... @@ -1076,13 +1075,13 @@ unariseArgBinder is_con_arg rho x =
    1076 1075
           -- break the post-unarisation invariant that says unboxed tuple/sum
    
    1077 1076
           -- binders should vanish. See Note [Post-unarisation invariants].
    
    1078 1077
           | isUnboxedSumType (idType x) || isUnboxedTupleType (idType x)
    
    1079
    -      -> do x' <- mkId (mkFastString "us") (primRepToType rep)
    
    1078
    +      -> do x' <- mkId (fsLit "us") (primRepToType rep)
    
    1080 1079
                 return (extendRho rho x (MultiVal [StgVarArg x']), [x'])
    
    1081 1080
           | otherwise
    
    1082 1081
           -> return (extendRhoWithoutValue rho x, [x])
    
    1083 1082
     
    
    1084 1083
         reps -> do
    
    1085
    -      xs <- mkIds (mkFastString "us") (map primRepToType reps)
    
    1084
    +      xs <- mkIds (fsLit "us") (map primRepToType reps)
    
    1086 1085
           return (extendRho rho x (MultiVal (map StgVarArg xs)), xs)
    
    1087 1086
     
    
    1088 1087
     --------------------------------------------------------------------------------
    
    ... ... @@ -1150,13 +1149,6 @@ mkIds fs tys = mkUnarisedIds fs tys
    1150 1149
     mkId :: FastString -> NvUnaryType -> UniqSM Id
    
    1151 1150
     mkId s t = mkUnarisedId s t
    
    1152 1151
     
    
    1153
    -isMultiValBndr :: Id -> Bool
    
    1154
    -isMultiValBndr id
    
    1155
    -  | [_] <- typePrimRep (idType id)
    
    1156
    -  = False
    
    1157
    -  | otherwise
    
    1158
    -  = True
    
    1159
    -
    
    1160 1152
     isUnboxedSumBndr :: Id -> Bool
    
    1161 1153
     isUnboxedSumBndr = isUnboxedSumType . idType
    
    1162 1154
     
    

  • compiler/GHC/Stg/Utils.hs
    ... ... @@ -41,9 +41,6 @@ mkUnarisedIds fs tys = mapM (mkUnarisedId fs) tys
    41 41
     mkUnarisedId :: MonadUnique m => FastString -> NvUnaryType -> m Id
    
    42 42
     mkUnarisedId s t = mkSysLocalM s ManyTy t
    
    43 43
     
    
    44
    --- Checks if id is a top level error application.
    
    45
    --- isErrorAp_maybe :: Id ->
    
    46
    -
    
    47 44
     -- | Extract the default case alternative
    
    48 45
     -- findDefaultStg :: [Alt b] -> ([Alt b], Maybe (Expr b))
    
    49 46
     findDefaultStg
    

  • compiler/GHC/StgToCmm/Layout.hs
    ... ... @@ -390,12 +390,12 @@ slowArgs platform args sccProfilingEnabled -- careful: reps contains voids (V),
    390 390
             stg_ap_pat = mkCmmRetInfoLabel rtsUnitId arg_pat
    
    391 391
             this_pat   = (N, Just (mkLblExpr stg_ap_pat)) : call_args
    
    392 392
             save_cccs  = [(N, Just (mkLblExpr save_cccs_lbl)), (N, Just $ cccsExpr platform)]
    
    393
    -        save_cccs_lbl = mkCmmRetInfoLabel rtsUnitId (fsLit $ "stg_restore_cccs_" ++ arg_reps)
    
    394
    -        arg_reps = case maximum (fmap fst args1) of
    
    395
    -            V64 -> "v64"
    
    396
    -            V32 -> "v32"
    
    397
    -            V16 -> "v16"
    
    398
    -            _   -> "d"
    
    393
    +        save_cccs_lbl = mkCmmRetInfoLabel rtsUnitId label_name
    
    394
    +        label_name = case maximum (fmap fst args1) of
    
    395
    +            V64 -> fsLit "stg_restore_cccs_v64"
    
    396
    +            V32 -> fsLit "stg_restore_cccs_v32"
    
    397
    +            V16 -> fsLit "stg_restore_cccs_v16"
    
    398
    +            _   -> fsLit "stg_restore_cccs_d"
    
    399 399
     
    
    400 400
     
    
    401 401
     
    

  • compiler/GHC/Types/RepType.hs
    ... ... @@ -295,11 +295,9 @@ instance Outputable SlotTy where
    295 295
       ppr FloatSlot       = text "FloatSlot"
    
    296 296
       ppr (VecSlot n e)   = text "VecSlot" <+> ppr n <+> ppr e
    
    297 297
     
    
    298
    -repSlotTy :: [PrimRep] -> Maybe SlotTy
    
    299
    -repSlotTy reps = case reps of
    
    300
    -                  [] -> Nothing
    
    301
    -                  [rep] -> Just (primRepSlot rep)
    
    302
    -                  _ -> pprPanic "repSlotTy" (ppr reps)
    
    298
    +repSlotTy :: PrimOrVoidRep -> Maybe SlotTy
    
    299
    +repSlotTy VoidRep = Nothing
    
    300
    +repSlotTy (NVRep rep) = Just (primRepSlot rep)
    
    303 301
     
    
    304 302
     primRepSlot :: PrimRep -> SlotTy
    
    305 303
     primRepSlot (BoxedRep mlev) = case mlev of
    

  • docs/users_guide/ghc_config.py.in
    ... ... @@ -15,8 +15,6 @@ else:
    15 15
     
    
    16 16
     libs_base_uri = '../libraries'
    
    17 17
     
    
    18
    -# N.B. If you add a package to this list be sure to also add a corresponding
    
    19
    -# LIBRARY_VERSION macro call to configure.ac.
    
    20 18
     lib_versions = {
    
    21 19
         'base': '@LIBRARY_base_UNIT_ID@',
    
    22 20
         'ghc-prim': '@LIBRARY_ghc_prim_UNIT_ID@',
    

  • libraries/ghc-internal/src/GHC/Internal/Data/Typeable/Internal.hs
    ... ... @@ -167,6 +167,9 @@ rnfKindRep (KindRepTypeLitD _ t) = rnfString t
    167 167
     
    
    168 168
     rnfRuntimeRep :: RuntimeRep -> ()
    
    169 169
     rnfRuntimeRep (VecRep !_ !_) = ()
    
    170
    +rnfRuntimeRep (TupleRep rs) = rnfList rnfRuntimeRep rs
    
    171
    +rnfRuntimeRep (SumRep rs) = rnfList rnfRuntimeRep rs
    
    172
    +rnfRuntimeRep (BoxedRep !_) = ()
    
    170 173
     rnfRuntimeRep !_             = ()
    
    171 174
     
    
    172 175
     rnfList :: (a -> ()) -> [a] -> ()
    

  • utils/check-exact/ExactPrint.hs
    ... ... @@ -2294,7 +2294,7 @@ instance ExactPrint (HsBind GhcPs) where
    2294 2294
         bind' <- markAnnotated bind
    
    2295 2295
         return (PatSynBind x bind')
    
    2296 2296
     
    
    2297
    -  exact x = error $ "HsBind: exact for " ++ showAst x
    
    2297
    +  exact (VarBind x _ _) = dataConCantHappen x
    
    2298 2298
     
    
    2299 2299
     -- ---------------------------------------------------------------------
    
    2300 2300