| 1 | Wed Jun 11 13:54:48 BST 2008 Max Bolingbroke <batterseapower@hotmail.com> |
|---|
| 2 | * Initial SAT fix |
|---|
| 3 | |
|---|
| 4 | Wed Jun 11 20:35:35 BST 2008 Max Bolingbroke <batterseapower@hotmail.com> |
|---|
| 5 | * SAT rewrite to fix #2321 |
|---|
| 6 | |
|---|
| 7 | New patches: |
|---|
| 8 | |
|---|
| 9 | [Initial SAT fix |
|---|
| 10 | Max Bolingbroke <batterseapower@hotmail.com>**20080611125448] { |
|---|
| 11 | hunk ./compiler/main/DynFlags.hs 836 |
|---|
| 12 | - -- static_args = dopt Opt_StaticArgumentTransformation dflags |
|---|
| 13 | + static_args = dopt Opt_StaticArgumentTransformation dflags |
|---|
| 14 | hunk ./compiler/main/DynFlags.hs 890 |
|---|
| 15 | - -- runWhen static_args CoreDoStaticArgs, |
|---|
| 16 | - -- XXX disabled, see #2321 |
|---|
| 17 | + runWhen static_args (CoreDoPasses [ simpl_gently, CoreDoStaticArgs ]), |
|---|
| 18 | hunk ./compiler/simplCore/SAT.lhs 7 |
|---|
| 19 | - Static Argument Transformation pass |
|---|
| 20 | + Static Argument Transformation pass |
|---|
| 21 | hunk ./compiler/simplCore/SAT.lhs 38 |
|---|
| 22 | - should_transform |
|---|
| 23 | + should_transform |
|---|
| 24 | hunk ./compiler/simplCore/SAT.lhs 56 |
|---|
| 25 | -import Var |
|---|
| 26 | +import Var hiding (mkLocalId) |
|---|
| 27 | hunk ./compiler/simplCore/SAT.lhs 60 |
|---|
| 28 | +import CoreUtils |
|---|
| 29 | hunk ./compiler/simplCore/SAT.lhs 67 |
|---|
| 30 | +import Name |
|---|
| 31 | hunk ./compiler/simplCore/SAT.lhs 70 |
|---|
| 32 | -import Panic |
|---|
| 33 | hunk ./compiler/simplCore/SAT.lhs 82 |
|---|
| 34 | - sat_bind_threaded_us us bind = |
|---|
| 35 | - let (us1, us2) = splitUniqSupply us |
|---|
| 36 | + sat_bind_threaded_us us bind = |
|---|
| 37 | + let (us1, us2) = splitUniqSupply us |
|---|
| 38 | hunk ./compiler/simplCore/SAT.lhs 168 |
|---|
| 39 | - |
|---|
| 40 | + |
|---|
| 41 | hunk ./compiler/simplCore/SAT.lhs 188 |
|---|
| 42 | - Environment |
|---|
| 43 | + Environment |
|---|
| 44 | hunk ./compiler/simplCore/SAT.lhs 238 |
|---|
| 45 | - Static Argument Transformation Monad |
|---|
| 46 | + Static Argument Transformation Monad |
|---|
| 47 | hunk ./compiler/simplCore/SAT.lhs 258 |
|---|
| 48 | - = SatM $ \us env -> |
|---|
| 49 | + = SatM $ \us env -> |
|---|
| 50 | hunk ./compiler/simplCore/SAT.lhs 286 |
|---|
| 51 | - Utility Functions |
|---|
| 52 | + Utility Functions |
|---|
| 53 | hunk ./compiler/simplCore/SAT.lhs 294 |
|---|
| 54 | -newSATName :: Id -> Type -> SatM Id |
|---|
| 55 | -newSATName _ ty |
|---|
| 56 | - = SatM $ \us env -> (mkSysLocal (fsLit "$sat") (uniqFromSupply us) ty, env) |
|---|
| 57 | +newSATName :: SatM Name |
|---|
| 58 | +newSATName = SatM $ \us env -> |
|---|
| 59 | + (mkSystemVarName (uniqFromSupply us) (fsLit "$sat"), env) |
|---|
| 60 | hunk ./compiler/simplCore/SAT.lhs 308 |
|---|
| 61 | -We implement saTransform using shadowing of binders, that is |
|---|
| 62 | -we transform |
|---|
| 63 | -map = \f as -> case as of |
|---|
| 64 | - [] -> [] |
|---|
| 65 | - (a':as') -> let x = f a' |
|---|
| 66 | - y = map f as' |
|---|
| 67 | - in x:y |
|---|
| 68 | +To do the transformation, the game plan is to: |
|---|
| 69 | + |
|---|
| 70 | +1. Create a small nonrecursive RHS that takes the |
|---|
| 71 | + original arguments to the function but discards |
|---|
| 72 | + the ones that are static and makes a call to the |
|---|
| 73 | + SATed version with the remainder. We intend that |
|---|
| 74 | + this will be inlined later, removing the overhead |
|---|
| 75 | + |
|---|
| 76 | +2. Bind this nonrecursive RHS over the original body |
|---|
| 77 | + WITH THE SAME UNIQUE as the original body so that |
|---|
| 78 | + any recursive calls to the original now go via |
|---|
| 79 | + the small wrapper |
|---|
| 80 | + |
|---|
| 81 | +3. Rebind the original function to a new one which contains |
|---|
| 82 | + our SATed function and just makes a call to it: |
|---|
| 83 | + we call the thing making this call the local body |
|---|
| 84 | + |
|---|
| 85 | +Example: transform this |
|---|
| 86 | + |
|---|
| 87 | + map :: forall a b. (a->b) -> [a] -> [b] |
|---|
| 88 | + map = /\ab. \f as -> body[map] |
|---|
| 89 | hunk ./compiler/simplCore/SAT.lhs 330 |
|---|
| 90 | -map = \f as -> let map = \f as -> map' as |
|---|
| 91 | - in let rec map' = \as -> case as of |
|---|
| 92 | - [] -> [] |
|---|
| 93 | - (a':as') -> let x = f a' |
|---|
| 94 | - y = map f as' |
|---|
| 95 | - in x:y |
|---|
| 96 | - in map' as |
|---|
| 97 | + map :: forall a b. (a->b) -> [a] -> [b] |
|---|
| 98 | + map = /\ab. \f as -> |
|---|
| 99 | + letrec map' :: [a] -> [b] |
|---|
| 100 | + map' = \as -> let map = /\ab. \f as -> map' as |
|---|
| 101 | + in body[map] |
|---|
| 102 | + in map' as |
|---|
| 103 | + |
|---|
| 104 | +Note [Shadow binding] |
|---|
| 105 | +~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 106 | +The calls to the inner map inside body[map] should get inlined |
|---|
| 107 | +by the local re-binding of 'map'. We call this the "shadow binding". |
|---|
| 108 | + |
|---|
| 109 | +But we can't use the original binder 'map' unchanged, because |
|---|
| 110 | +it might be exported, in which case the shadow binding won't be |
|---|
| 111 | +discarded as dead code after it is inlined. |
|---|
| 112 | hunk ./compiler/simplCore/SAT.lhs 346 |
|---|
| 113 | -the inner map should get inlined and eliminated. |
|---|
| 114 | +So we use a hack: we make a new SysLocal binder with the *same* unique |
|---|
| 115 | +as binder. (Another alternative would be to reset the export flag.) |
|---|
| 116 | hunk ./compiler/simplCore/SAT.lhs 354 |
|---|
| 117 | - Just (tyargs, args) | should_transform args |
|---|
| 118 | + Just (_, args) | should_transform args |
|---|
| 119 | hunk ./compiler/simplCore/SAT.lhs 358 |
|---|
| 120 | - binder' <- newSATName binder (mkSATLamTy tyargs args) |
|---|
| 121 | - new_rhs <- mkNewRhs binder binder' args rhs |
|---|
| 122 | + sat_name <- newSATName |
|---|
| 123 | + let new_rhs = mkNewRhs sat_name args |
|---|
| 124 | hunk ./compiler/simplCore/SAT.lhs 364 |
|---|
| 125 | - = staticArgsLength > 1 -- THIS IS THE DECISION POINT |
|---|
| 126 | + = staticArgsLength > 1 -- THIS IS THE DECISION POINT |
|---|
| 127 | hunk ./compiler/simplCore/SAT.lhs 366 |
|---|
| 128 | - |
|---|
| 129 | - mkNewRhs binder binder' args rhs = let |
|---|
| 130 | - non_static_args :: [Id] |
|---|
| 131 | + |
|---|
| 132 | + (rhs_binders, rhs_body) = collectBinders rhs |
|---|
| 133 | + rhs_val_binders = filter isId rhs_binders |
|---|
| 134 | + |
|---|
| 135 | + mkNewRhs name' args |
|---|
| 136 | + = mkLams rhs_binders $ |
|---|
| 137 | + Let (Rec [(bndr', rec_body)]) {-in-} local_body |
|---|
| 138 | + where |
|---|
| 139 | + non_static_args :: [Var] |
|---|
| 140 | hunk ./compiler/simplCore/SAT.lhs 383 |
|---|
| 141 | - -- To do the transformation, the game plan is to: |
|---|
| 142 | - -- 1. Create a small nonrecursive RHS that takes the |
|---|
| 143 | - -- original arguments to the function but discards |
|---|
| 144 | - -- the ones that are static and makes a call to the |
|---|
| 145 | - -- SATed version with the remainder. We intend that |
|---|
| 146 | - -- this will be inlined later, removing the overhead |
|---|
| 147 | - -- 2. Bind this nonrecursive RHS over the original body |
|---|
| 148 | - -- WITH THE SAME UNIQUE as the original body so that |
|---|
| 149 | - -- any recursive calls to the original now go via |
|---|
| 150 | - -- the small wrapper |
|---|
| 151 | - -- 3. Rebind the original function to a new one which contains |
|---|
| 152 | - -- our SATed function and just makes a call to it: |
|---|
| 153 | - -- we call the thing making this call the local body |
|---|
| 154 | - |
|---|
| 155 | - local_body = mkApps (Var binder') [Var a | a <- non_static_args] |
|---|
| 156 | - |
|---|
| 157 | - nonrec_rhs = mkOrigLam local_body |
|---|
| 158 | - |
|---|
| 159 | - -- HACK! The following is a fake SysLocal binder with |
|---|
| 160 | - -- *the same* unique as binder. |
|---|
| 161 | - -- the reason for this is the following: |
|---|
| 162 | - -- this binder *will* get inlined but if it happen to be |
|---|
| 163 | - -- a top level binder it is never removed as dead code, |
|---|
| 164 | - -- therefore we have to remove that information (of it being |
|---|
| 165 | - -- top-level or exported somehow.) |
|---|
| 166 | - -- A better fix is to use binder directly but with the TopLevel |
|---|
| 167 | - -- tag (or Exported tag) modified. |
|---|
| 168 | - fake_binder = mkSysLocal (fsLit "sat") |
|---|
| 169 | - (getUnique binder) |
|---|
| 170 | - (idType binder) |
|---|
| 171 | - rec_body = mkLams non_static_args |
|---|
| 172 | - (Let (NonRec fake_binder nonrec_rhs) {-in-} rhs_body) |
|---|
| 173 | - in return (mkOrigLam (Let (Rec [(binder', rec_body)]) {-in-} local_body)) |
|---|
| 174 | - where |
|---|
| 175 | - (rhs_binders, rhs_body) = collectBinders rhs |
|---|
| 176 | - rhs_val_binders = filter isId rhs_binders |
|---|
| 177 | - |
|---|
| 178 | - mkOrigLam = mkLams rhs_binders |
|---|
| 179 | - |
|---|
| 180 | - mkSATLamTy tyargs args |
|---|
| 181 | - = substTy (mk_inst_tyenv tyargs tv_tmpl) |
|---|
| 182 | - (mkSigmaTy tv_tmpl' theta_tys' tau_ty') |
|---|
| 183 | - where |
|---|
| 184 | - -- get type info for the local function: |
|---|
| 185 | - (tv_tmpl, theta_tys, tau_ty) = (tcSplitSigmaTy . idType) binder |
|---|
| 186 | - (reg_arg_tys, res_type) = splitFunTys tau_ty |
|---|
| 187 | - |
|---|
| 188 | - -- now, we drop the ones that are |
|---|
| 189 | - -- static, that is, the ones we will not pass to the local function |
|---|
| 190 | - tv_tmpl' = dropStatics tyargs tv_tmpl |
|---|
| 191 | + bndr' = mkLocalId name' (exprType rec_body) |
|---|
| 192 | hunk ./compiler/simplCore/SAT.lhs 385 |
|---|
| 193 | - -- Extract the args that correspond to the theta tys (e.g. dictionaries) and argument tys (normal values) |
|---|
| 194 | - (args1, args2) = splitAtList theta_tys args |
|---|
| 195 | - theta_tys' = dropStatics args1 theta_tys |
|---|
| 196 | - reg_arg_tys' = dropStatics args2 reg_arg_tys |
|---|
| 197 | + rec_body = mkLams non_static_args $ |
|---|
| 198 | + Let (NonRec shadow_binder nonrec_rhs) rhs_body |
|---|
| 199 | + nonrec_rhs = mkLams rhs_binders local_body |
|---|
| 200 | + local_body = mkVarApps (Var bndr') non_static_args |
|---|
| 201 | hunk ./compiler/simplCore/SAT.lhs 390 |
|---|
| 202 | - -- Piece the function type back together from our static-filtered components |
|---|
| 203 | - tau_ty' = mkFunTys reg_arg_tys' res_type |
|---|
| 204 | hunk ./compiler/simplCore/SAT.lhs 391 |
|---|
| 205 | - mk_inst_tyenv :: [Staticness Type] -> [TyVar] -> TvSubst |
|---|
| 206 | - mk_inst_tyenv [] _ = emptyTvSubst |
|---|
| 207 | - mk_inst_tyenv (Static s:args) (t:ts) = extendTvSubst (mk_inst_tyenv args ts) t s |
|---|
| 208 | - mk_inst_tyenv (_:args) (_:ts) = mk_inst_tyenv args ts |
|---|
| 209 | - mk_inst_tyenv _ _ = panic "mk_inst_tyenv" |
|---|
| 210 | - |
|---|
| 211 | -dropStatics :: [Staticness a] -> [b] -> [b] |
|---|
| 212 | -dropStatics [] t = t |
|---|
| 213 | -dropStatics (Static _:args) (_:ts) = dropStatics args ts |
|---|
| 214 | -dropStatics (_:args) (t:ts) = t:dropStatics args ts |
|---|
| 215 | -dropStatics _ _ = panic "dropStatics" |
|---|
| 216 | + -- See Note [Shadow binding] |
|---|
| 217 | + shadow_binder = mkSysLocal (fsLit "sat") (getUnique binder) (idType binder) |
|---|
| 218 | hunk ./compiler/simplCore/SAT.lhs 398 |
|---|
| 219 | - |
|---|
| 220 | } |
|---|
| 221 | |
|---|
| 222 | [SAT rewrite to fix #2321 |
|---|
| 223 | Max Bolingbroke <batterseapower@hotmail.com>**20080611193535] { |
|---|
| 224 | hunk ./compiler/simplCore/SAT.lhs 57 |
|---|
| 225 | -import VarEnv |
|---|
| 226 | hunk ./compiler/simplCore/SAT.lhs 67 |
|---|
| 227 | +import FiniteMap |
|---|
| 228 | +import VarSet |
|---|
| 229 | +import UniqSet |
|---|
| 230 | +import Outputable |
|---|
| 231 | hunk ./compiler/simplCore/SAT.lhs 87 |
|---|
| 232 | - in (us1, runSAT (satBind bind) us2) |
|---|
| 233 | + in (us1, fst $ runSAT (satBind bind emptyUniqSet) us2) |
|---|
| 234 | hunk ./compiler/simplCore/SAT.lhs 94 |
|---|
| 235 | -satBind :: CoreBind -> SatM CoreBind |
|---|
| 236 | -satBind (NonRec binder expr) = do |
|---|
| 237 | - expr' <- satExpr expr |
|---|
| 238 | - return (NonRec binder expr') |
|---|
| 239 | -satBind (Rec [(binder, rhs)]) = do |
|---|
| 240 | - insSAEnvFromBinding binder rhs |
|---|
| 241 | - rhs' <- satExpr rhs |
|---|
| 242 | - saTransform binder rhs' |
|---|
| 243 | -satBind (Rec pairs) = do |
|---|
| 244 | +satBind :: CoreBind -> IdSet -> SatM (CoreBind, IdSATInfo) |
|---|
| 245 | +satBind (NonRec binder expr) interesting_ids = do |
|---|
| 246 | + (expr', sat_info_expr, expr_app) <- satExpr expr interesting_ids |
|---|
| 247 | + return (NonRec binder expr', finalizeApp expr_app sat_info_expr) |
|---|
| 248 | +satBind (Rec [(binder, rhs)]) interesting_ids = do |
|---|
| 249 | + let interesting_ids' = interesting_ids `addOneToUniqSet` binder |
|---|
| 250 | + (rhs_binders, rhs_body) = collectBinders rhs |
|---|
| 251 | + (rhs_body', sat_info_rhs_body) <- satTopLevelExpr rhs_body interesting_ids' |
|---|
| 252 | + let sat_info_rhs_from_args = unitFM binder (bindersToSATInfo rhs_binders) |
|---|
| 253 | + sat_info_rhs' = mergeIdSATInfo sat_info_rhs_from_args sat_info_rhs_body |
|---|
| 254 | + |
|---|
| 255 | + shadowing = binder `elementOfUniqSet` interesting_ids |
|---|
| 256 | + sat_info_rhs'' = if shadowing |
|---|
| 257 | + then sat_info_rhs' `delFromFM` binder -- For safety |
|---|
| 258 | + else sat_info_rhs' |
|---|
| 259 | + |
|---|
| 260 | + us <- getUniqs |
|---|
| 261 | + let bind' = saTransformMaybe us binder (lookupFM sat_info_rhs' binder) rhs_binders rhs_body' |
|---|
| 262 | + return (bind', sat_info_rhs'') |
|---|
| 263 | +satBind (Rec pairs) interesting_ids = do |
|---|
| 264 | hunk ./compiler/simplCore/SAT.lhs 115 |
|---|
| 265 | - rhss' <- mapM satExpr rhss |
|---|
| 266 | - return (Rec (zipEqual "satBind" binders rhss')) |
|---|
| 267 | + rhss_SATed <- mapM (\e -> satTopLevelExpr e interesting_ids) rhss |
|---|
| 268 | + let (rhss', sat_info_rhss') = unzip rhss_SATed |
|---|
| 269 | + return (Rec (zipEqual "satBind" binders rhss'), mergeIdSATInfos sat_info_rhss') |
|---|
| 270 | hunk ./compiler/simplCore/SAT.lhs 120 |
|---|
| 271 | -emptySATInfo :: Id -> Maybe (Id, SATInfo) |
|---|
| 272 | -emptySATInfo v = Just (v, ([], [])) |
|---|
| 273 | - |
|---|
| 274 | -satExpr :: CoreExpr -> SatM CoreExpr |
|---|
| 275 | -satExpr var@(Var v) = do |
|---|
| 276 | - updSAEnv (emptySATInfo v) |
|---|
| 277 | - return var |
|---|
| 278 | - |
|---|
| 279 | -satExpr lit@(Lit _) = do |
|---|
| 280 | - return lit |
|---|
| 281 | - |
|---|
| 282 | -satExpr (Lam binders body) = do |
|---|
| 283 | - body' <- satExpr body |
|---|
| 284 | - return (Lam binders body') |
|---|
| 285 | +data App = VarApp Id | TypeApp Type |
|---|
| 286 | +data Staticness a = Static a | NotStatic |
|---|
| 287 | hunk ./compiler/simplCore/SAT.lhs 123 |
|---|
| 288 | -satExpr app@(App _ _) = do |
|---|
| 289 | - getAppArgs app |
|---|
| 290 | +type IdAppInfo = (Id, SATInfo) |
|---|
| 291 | hunk ./compiler/simplCore/SAT.lhs 125 |
|---|
| 292 | -satExpr (Case expr bndr ty alts) = do |
|---|
| 293 | - expr' <- satExpr expr |
|---|
| 294 | - alts' <- mapM satAlt alts |
|---|
| 295 | - return (Case expr' bndr ty alts') |
|---|
| 296 | - where |
|---|
| 297 | - satAlt (con, bndrs, expr) = do |
|---|
| 298 | - expr' <- satExpr expr |
|---|
| 299 | - return (con, bndrs, expr') |
|---|
| 300 | +type SATInfo = [Staticness App] |
|---|
| 301 | +type IdSATInfo = FiniteMap Id SATInfo |
|---|
| 302 | hunk ./compiler/simplCore/SAT.lhs 128 |
|---|
| 303 | -satExpr (Let bind body) = do |
|---|
| 304 | - body' <- satExpr body |
|---|
| 305 | - bind' <- satBind bind |
|---|
| 306 | - return (Let bind' body') |
|---|
| 307 | +{- |
|---|
| 308 | +pprIdSATInfo id_sat_info = vcat (map pprIdAndSATInfo (fmToList id_sat_info)) |
|---|
| 309 | + where pprIdAndSATInfo (v, sat_info) = hang (ppr v <> colon) 4 (pprSATInfo sat_info) |
|---|
| 310 | +-} |
|---|
| 311 | hunk ./compiler/simplCore/SAT.lhs 133 |
|---|
| 312 | -satExpr (Note note expr) = do |
|---|
| 313 | - expr' <- satExpr expr |
|---|
| 314 | - return (Note note expr') |
|---|
| 315 | +pprSATInfo :: SATInfo -> SDoc |
|---|
| 316 | +pprSATInfo staticness = hcat $ map pprStaticness staticness |
|---|
| 317 | hunk ./compiler/simplCore/SAT.lhs 136 |
|---|
| 318 | -satExpr ty@(Type _) = do |
|---|
| 319 | - return ty |
|---|
| 320 | +pprStaticness :: Staticness App -> SDoc |
|---|
| 321 | +pprStaticness (Static (VarApp _)) = ptext (sLit "SV") |
|---|
| 322 | +pprStaticness (Static (TypeApp _)) = ptext (sLit "ST") |
|---|
| 323 | +pprStaticness NotStatic = ptext (sLit "NS") |
|---|
| 324 | hunk ./compiler/simplCore/SAT.lhs 141 |
|---|
| 325 | -satExpr (Cast expr coercion) = do |
|---|
| 326 | - expr' <- satExpr expr |
|---|
| 327 | - return (Cast expr' coercion) |
|---|
| 328 | -\end{code} |
|---|
| 329 | hunk ./compiler/simplCore/SAT.lhs 142 |
|---|
| 330 | -\begin{code} |
|---|
| 331 | -getAppArgs :: CoreExpr -> SatM CoreExpr |
|---|
| 332 | -getAppArgs app = do |
|---|
| 333 | - (app', result) <- get app |
|---|
| 334 | - updSAEnv result |
|---|
| 335 | - return app' |
|---|
| 336 | - where |
|---|
| 337 | - get :: CoreExpr -> SatM (CoreExpr, Maybe (Id, SATInfo)) |
|---|
| 338 | - get (App e (Type ty)) = do |
|---|
| 339 | - (e', result) <- get e |
|---|
| 340 | - return |
|---|
| 341 | - (App e' (Type ty), |
|---|
| 342 | - case result of |
|---|
| 343 | - Nothing -> Nothing |
|---|
| 344 | - Just (v, (tv, lv)) -> Just (v, (tv ++ [Static ty], lv))) |
|---|
| 345 | +mergeSATInfo :: SATInfo -> SATInfo -> SATInfo |
|---|
| 346 | +mergeSATInfo [] _ = [] |
|---|
| 347 | +mergeSATInfo _ [] = [] |
|---|
| 348 | +mergeSATInfo (NotStatic:statics) (_:apps) = NotStatic : mergeSATInfo statics apps |
|---|
| 349 | +mergeSATInfo (_:statics) (NotStatic:apps) = NotStatic : mergeSATInfo statics apps |
|---|
| 350 | +mergeSATInfo ((Static (VarApp v)):statics) ((Static (VarApp v')):apps) = (if v == v' then Static (VarApp v) else NotStatic) : mergeSATInfo statics apps |
|---|
| 351 | +mergeSATInfo ((Static (TypeApp t)):statics) ((Static (TypeApp t')):apps) = (if t `coreEqType` t' then Static (TypeApp t) else NotStatic) : mergeSATInfo statics apps |
|---|
| 352 | +mergeSATInfo l r = pprPanic "mergeSATInfo" $ ptext (sLit "Left:") <> pprSATInfo l <> ptext (sLit ", ") |
|---|
| 353 | + <> ptext (sLit "Right:") <> pprSATInfo r |
|---|
| 354 | hunk ./compiler/simplCore/SAT.lhs 152 |
|---|
| 355 | - get (App e a) = do |
|---|
| 356 | - (e', result) <- get e |
|---|
| 357 | - a' <- satExpr a |
|---|
| 358 | +mergeIdSATInfo :: IdSATInfo -> IdSATInfo -> IdSATInfo |
|---|
| 359 | +mergeIdSATInfo = plusFM_C mergeSATInfo |
|---|
| 360 | hunk ./compiler/simplCore/SAT.lhs 155 |
|---|
| 361 | - let si = case a' of |
|---|
| 362 | - Var v -> Static v |
|---|
| 363 | - _ -> NotStatic |
|---|
| 364 | - return |
|---|
| 365 | - (App e' a', |
|---|
| 366 | - case result of |
|---|
| 367 | - Just (v, (tv, lv)) -> Just (v, (tv, lv ++ [si])) |
|---|
| 368 | - Nothing -> Nothing) |
|---|
| 369 | +mergeIdSATInfos :: [IdSATInfo] -> IdSATInfo |
|---|
| 370 | +mergeIdSATInfos = foldl1' mergeIdSATInfo |
|---|
| 371 | hunk ./compiler/simplCore/SAT.lhs 158 |
|---|
| 372 | - get var@(Var v) = do |
|---|
| 373 | - return (var, emptySATInfo v) |
|---|
| 374 | +bindersToSATInfo :: [Id] -> SATInfo |
|---|
| 375 | +bindersToSATInfo vs = map (Static . binderToApp) vs |
|---|
| 376 | + where binderToApp v = if isId v |
|---|
| 377 | + then VarApp v |
|---|
| 378 | + else TypeApp $ mkTyVarTy v |
|---|
| 379 | hunk ./compiler/simplCore/SAT.lhs 164 |
|---|
| 380 | - get e = do |
|---|
| 381 | - e' <- satExpr e |
|---|
| 382 | - return (e', Nothing) |
|---|
| 383 | +finalizeApp :: Maybe IdAppInfo -> IdSATInfo -> IdSATInfo |
|---|
| 384 | +finalizeApp Nothing id_sat_info = id_sat_info |
|---|
| 385 | +finalizeApp (Just (v, sat_info')) id_sat_info = |
|---|
| 386 | + let sat_info'' = case lookupFM id_sat_info v of |
|---|
| 387 | + Nothing -> sat_info' |
|---|
| 388 | + Just sat_info -> mergeSATInfo sat_info sat_info' |
|---|
| 389 | + in addToFM id_sat_info v sat_info'' |
|---|
| 390 | hunk ./compiler/simplCore/SAT.lhs 172 |
|---|
| 391 | - |
|---|
| 392 | -%************************************************************************ |
|---|
| 393 | - |
|---|
| 394 | - Environment |
|---|
| 395 | - |
|---|
| 396 | -%************************************************************************ |
|---|
| 397 | - |
|---|
| 398 | hunk ./compiler/simplCore/SAT.lhs 173 |
|---|
| 399 | -data SATEnv = SatEnv { idSATInfo :: IdEnv SATInfo } |
|---|
| 400 | +satTopLevelExpr :: CoreExpr -> IdSet -> SatM (CoreExpr, IdSATInfo) |
|---|
| 401 | +satTopLevelExpr expr interesting_ids = do |
|---|
| 402 | + (expr', sat_info_expr, expr_app) <- satExpr expr interesting_ids |
|---|
| 403 | + return (expr', finalizeApp expr_app sat_info_expr) |
|---|
| 404 | hunk ./compiler/simplCore/SAT.lhs 178 |
|---|
| 405 | -emptyEnv :: SATEnv |
|---|
| 406 | -emptyEnv = SatEnv { idSATInfo = emptyVarEnv } |
|---|
| 407 | +satExpr :: CoreExpr -> IdSet -> SatM (CoreExpr, IdSATInfo, Maybe IdAppInfo) |
|---|
| 408 | +satExpr var@(Var v) interesting_ids = do |
|---|
| 409 | + let app_info = if v `elementOfUniqSet` interesting_ids |
|---|
| 410 | + then Just (v, []) |
|---|
| 411 | + else Nothing |
|---|
| 412 | + return (var, emptyFM, app_info) |
|---|
| 413 | hunk ./compiler/simplCore/SAT.lhs 185 |
|---|
| 414 | -type SATInfo = ([Staticness Type], [Staticness Id]) |
|---|
| 415 | +satExpr lit@(Lit _) _ = do |
|---|
| 416 | + return (lit, emptyFM, Nothing) |
|---|
| 417 | hunk ./compiler/simplCore/SAT.lhs 188 |
|---|
| 418 | -data Staticness a = Static a | NotStatic |
|---|
| 419 | +satExpr (Lam binders body) interesting_ids = do |
|---|
| 420 | + (body', sat_info, this_app) <- satExpr body interesting_ids |
|---|
| 421 | + return (Lam binders body', finalizeApp this_app sat_info, Nothing) |
|---|
| 422 | hunk ./compiler/simplCore/SAT.lhs 192 |
|---|
| 423 | -delOneFromSAEnv :: Id -> SatM () |
|---|
| 424 | -delOneFromSAEnv v = modifyEnv $ \env -> env { idSATInfo = delVarEnv (idSATInfo env) v } |
|---|
| 425 | +satExpr (App fn arg) interesting_ids = do |
|---|
| 426 | + (fn', sat_info_fn, fn_app) <- satExpr fn interesting_ids |
|---|
| 427 | + let satRemainder = boring fn' sat_info_fn |
|---|
| 428 | + case fn_app of |
|---|
| 429 | + Nothing -> satRemainder Nothing |
|---|
| 430 | + Just (fn_id, fn_app_info) -> |
|---|
| 431 | + -- TODO: remove this use of append somehow (use a data structure with O(1) append but a left-to-right kind of interface) |
|---|
| 432 | + let satRemainderWithStaticness arg_staticness = satRemainder $ Just (fn_id, fn_app_info ++ [arg_staticness]) |
|---|
| 433 | + in case arg of |
|---|
| 434 | + Type t -> satRemainderWithStaticness $ Static (TypeApp t) |
|---|
| 435 | + Var v -> satRemainderWithStaticness $ Static (VarApp v) |
|---|
| 436 | + _ -> satRemainderWithStaticness $ NotStatic |
|---|
| 437 | + where |
|---|
| 438 | + boring :: CoreExpr -> IdSATInfo -> Maybe IdAppInfo -> SatM (CoreExpr, IdSATInfo, Maybe IdAppInfo) |
|---|
| 439 | + boring fn' sat_info_fn app_info = |
|---|
| 440 | + do (arg', sat_info_arg, arg_app) <- satExpr arg interesting_ids |
|---|
| 441 | + let sat_info_arg' = finalizeApp arg_app sat_info_arg |
|---|
| 442 | + sat_info = mergeIdSATInfo sat_info_fn sat_info_arg' |
|---|
| 443 | + return (App fn' arg', sat_info, app_info) |
|---|
| 444 | hunk ./compiler/simplCore/SAT.lhs 212 |
|---|
| 445 | -updSAEnv :: Maybe (Id, SATInfo) -> SatM () |
|---|
| 446 | -updSAEnv Nothing = do |
|---|
| 447 | - return () |
|---|
| 448 | -updSAEnv (Just (b, (tyargs, args))) = do |
|---|
| 449 | - r <- getSATInfo b |
|---|
| 450 | - case r of |
|---|
| 451 | - Nothing -> return () |
|---|
| 452 | - Just (tyargs', args') -> do |
|---|
| 453 | - delOneFromSAEnv b |
|---|
| 454 | - insSAEnv b (checkArgs (eqWith coreEqType) tyargs tyargs', |
|---|
| 455 | - checkArgs (eqWith (==)) args args') |
|---|
| 456 | - where eqWith _ NotStatic NotStatic = True |
|---|
| 457 | - eqWith eq (Static x) (Static y) = x `eq` y |
|---|
| 458 | - eqWith _ _ _ = False |
|---|
| 459 | +satExpr (Case expr bndr ty alts) interesting_ids = do |
|---|
| 460 | + (expr', sat_info_expr, expr_app) <- satExpr expr interesting_ids |
|---|
| 461 | + let sat_info_expr' = finalizeApp expr_app sat_info_expr |
|---|
| 462 | + |
|---|
| 463 | + zipped_alts' <- mapM satAlt alts |
|---|
| 464 | + let (alts', sat_infos_alts) = unzip zipped_alts' |
|---|
| 465 | + return (Case expr' bndr ty alts', mergeIdSATInfo sat_info_expr' (mergeIdSATInfos sat_infos_alts), Nothing) |
|---|
| 466 | + where |
|---|
| 467 | + satAlt (con, bndrs, expr) = do |
|---|
| 468 | + (expr', sat_info_expr) <- satTopLevelExpr expr interesting_ids |
|---|
| 469 | + return ((con, bndrs, expr'), sat_info_expr) |
|---|
| 470 | hunk ./compiler/simplCore/SAT.lhs 224 |
|---|
| 471 | -checkArgs :: (Staticness a -> Staticness a -> Bool) -> [Staticness a] -> [Staticness a] -> [Staticness a] |
|---|
| 472 | -checkArgs _ as [] = notStatics (length as) |
|---|
| 473 | -checkArgs _ [] as = notStatics (length as) |
|---|
| 474 | -checkArgs eq (a:as) (a':as') | a `eq` a' = a:checkArgs eq as as' |
|---|
| 475 | -checkArgs eq (_:as) (_:as') = NotStatic:checkArgs eq as as' |
|---|
| 476 | +satExpr (Let bind body) interesting_ids = do |
|---|
| 477 | + (body', sat_info_body, body_app) <- satExpr body interesting_ids |
|---|
| 478 | + (bind', sat_info_bind) <- satBind bind interesting_ids |
|---|
| 479 | + return (Let bind' body', mergeIdSATInfo sat_info_body sat_info_bind, body_app) |
|---|
| 480 | hunk ./compiler/simplCore/SAT.lhs 229 |
|---|
| 481 | -notStatics :: Int -> [Staticness a] |
|---|
| 482 | -notStatics n = nOfThem n NotStatic |
|---|
| 483 | +satExpr (Note note expr) interesting_ids = do |
|---|
| 484 | + (expr', sat_info_expr, expr_app) <- satExpr expr interesting_ids |
|---|
| 485 | + return (Note note expr', sat_info_expr, expr_app) |
|---|
| 486 | hunk ./compiler/simplCore/SAT.lhs 233 |
|---|
| 487 | -insSAEnv :: Id -> SATInfo -> SatM () |
|---|
| 488 | -insSAEnv b info = modifyEnv $ \env -> env { idSATInfo = extendVarEnv (idSATInfo env) b info } |
|---|
| 489 | +satExpr ty@(Type _) _ = do |
|---|
| 490 | + return (ty, emptyFM, Nothing) |
|---|
| 491 | hunk ./compiler/simplCore/SAT.lhs 236 |
|---|
| 492 | -insSAEnvFromBinding :: Id -> CoreExpr -> SatM () |
|---|
| 493 | -insSAEnvFromBinding bndr e = insSAEnv bndr (getArgLists e) |
|---|
| 494 | +satExpr (Cast expr coercion) interesting_ids = do |
|---|
| 495 | + (expr', sat_info_expr, expr_app) <- satExpr expr interesting_ids |
|---|
| 496 | + return (Cast expr' coercion, sat_info_expr, expr_app) |
|---|
| 497 | hunk ./compiler/simplCore/SAT.lhs 247 |
|---|
| 498 | -Two items of state to thread around: a UniqueSupply and a SATEnv. |
|---|
| 499 | +Thread around a UniqueSupply |
|---|
| 500 | hunk ./compiler/simplCore/SAT.lhs 251 |
|---|
| 501 | - = SatM (UniqSupply -> SATEnv -> (result, SATEnv)) |
|---|
| 502 | + = SatM (UniqSupply -> result) |
|---|
| 503 | hunk ./compiler/simplCore/SAT.lhs 259 |
|---|
| 504 | -runSAT (SatM f) us = fst $ f us emptyEnv |
|---|
| 505 | +runSAT (SatM f) us = f us |
|---|
| 506 | hunk ./compiler/simplCore/SAT.lhs 263 |
|---|
| 507 | - = SatM $ \us env -> |
|---|
| 508 | + = SatM $ \us -> |
|---|
| 509 | hunk ./compiler/simplCore/SAT.lhs 265 |
|---|
| 510 | - case m s1 env of { (m_result, menv) -> |
|---|
| 511 | + case m s1 of { m_result -> |
|---|
| 512 | hunk ./compiler/simplCore/SAT.lhs 267 |
|---|
| 513 | - k' s2 menv }}} |
|---|
| 514 | + k' s2 }}} |
|---|
| 515 | hunk ./compiler/simplCore/SAT.lhs 271 |
|---|
| 516 | - = SatM $ \us env -> |
|---|
| 517 | + = SatM $ \us -> |
|---|
| 518 | hunk ./compiler/simplCore/SAT.lhs 273 |
|---|
| 519 | - case m s1 env of { (_, menv) -> |
|---|
| 520 | - k s2 menv }} |
|---|
| 521 | + case m s1 of { _ -> |
|---|
| 522 | + k s2 }} |
|---|
| 523 | hunk ./compiler/simplCore/SAT.lhs 277 |
|---|
| 524 | -returnSAT v = withEnv $ \env -> (v, env) |
|---|
| 525 | - |
|---|
| 526 | -modifyEnv :: (SATEnv -> SATEnv) -> SatM () |
|---|
| 527 | -modifyEnv f = SatM $ \_ env -> ((), f env) |
|---|
| 528 | - |
|---|
| 529 | -withEnv :: (SATEnv -> (b, SATEnv)) -> SatM b |
|---|
| 530 | -withEnv f = SatM $ \_ env -> f env |
|---|
| 531 | - |
|---|
| 532 | -projectFromEnv :: (SATEnv -> a) -> SatM a |
|---|
| 533 | -projectFromEnv f = withEnv (\env -> (f env, env)) |
|---|
| 534 | -\end{code} |
|---|
| 535 | - |
|---|
| 536 | -%************************************************************************ |
|---|
| 537 | - |
|---|
| 538 | - Utility Functions |
|---|
| 539 | - |
|---|
| 540 | -%************************************************************************ |
|---|
| 541 | - |
|---|
| 542 | -\begin{code} |
|---|
| 543 | -getSATInfo :: Id -> SatM (Maybe SATInfo) |
|---|
| 544 | -getSATInfo var = projectFromEnv $ \env -> lookupVarEnv (idSATInfo env) var |
|---|
| 545 | - |
|---|
| 546 | -newSATName :: SatM Name |
|---|
| 547 | -newSATName = SatM $ \us env -> |
|---|
| 548 | - (mkSystemVarName (uniqFromSupply us) (fsLit "$sat"), env) |
|---|
| 549 | - |
|---|
| 550 | -getArgLists :: CoreExpr -> ([Staticness Type], [Staticness Id]) |
|---|
| 551 | -getArgLists expr |
|---|
| 552 | - = let |
|---|
| 553 | - (tvs, lambda_bounds, _) = collectTyAndValBinders expr |
|---|
| 554 | - in |
|---|
| 555 | - ([ Static (mkTyVarTy tv) | tv <- tvs ], |
|---|
| 556 | - [ Static v | v <- lambda_bounds ]) |
|---|
| 557 | +returnSAT x = SatM $ \_ -> x |
|---|
| 558 | hunk ./compiler/simplCore/SAT.lhs 279 |
|---|
| 559 | +getUniqs :: SatM [Unique] |
|---|
| 560 | +getUniqs = SatM $ \us -> uniqsFromSupply us |
|---|
| 561 | hunk ./compiler/simplCore/SAT.lhs 312 |
|---|
| 562 | +Note [Binder type capture] |
|---|
| 563 | +~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 564 | + |
|---|
| 565 | +We have to contrive to ignore the static type arguments applied to a shadowing |
|---|
| 566 | +local body. If we don't we get something like this: |
|---|
| 567 | + |
|---|
| 568 | +[Exported] |
|---|
| 569 | +[Arity 3] |
|---|
| 570 | +GHC.Base.until = |
|---|
| 571 | + \ (@ a_aiK) |
|---|
| 572 | + (p_a6T :: a_aiK -> GHC.Bool.Bool) |
|---|
| 573 | + (f_a6V :: a_aiK -> a_aiK) |
|---|
| 574 | + (x_a6X :: a_aiK) -> |
|---|
| 575 | + letrec { |
|---|
| 576 | + sat_worker_s1aU :: a_aiK -> a_aiK |
|---|
| 577 | + [] |
|---|
| 578 | + sat_worker_s1aU = |
|---|
| 579 | + \ (x_a6X :: a_aiK) -> |
|---|
| 580 | + let { |
|---|
| 581 | + sat_shadow_r17 :: forall a_a3O. |
|---|
| 582 | + (a_a3O -> GHC.Bool.Bool) -> (a_a3O -> a_a3O) -> a_a3O -> a_a3O |
|---|
| 583 | + [] |
|---|
| 584 | + sat_shadow_r17 = |
|---|
| 585 | + \ (@ a_aiK) |
|---|
| 586 | + (p_a6T :: a_aiK -> GHC.Bool.Bool) |
|---|
| 587 | + (f_a6V :: a_aiK -> a_aiK) |
|---|
| 588 | + (x_a6X :: a_aiK) -> |
|---|
| 589 | + sat_worker_s1aU x_a6X } in |
|---|
| 590 | + case p_a6T x_a6X of wild_X3y [ALWAYS Dead Nothing] { |
|---|
| 591 | + GHC.Bool.False -> GHC.Base.until @ a_aiK p_a6T f_a6V (f_a6V x_a6X); |
|---|
| 592 | + GHC.Bool.True -> x_a6X |
|---|
| 593 | + }; } in |
|---|
| 594 | + sat_worker_s1aU x_a6X |
|---|
| 595 | + |
|---|
| 596 | +Where sat_shadow has captured the type variables of x_a6X etc as it has a a_aiK |
|---|
| 597 | +type argument. This is bad because it means the application sat_worker_s1aU x_a6X |
|---|
| 598 | +is not well typed. |
|---|
| 599 | + |
|---|
| 600 | +We solve this by manufacturing a phony type variable that replaces a_aiK in the |
|---|
| 601 | +sat_shadow_r17 binding but NOT obviously in the top level binding. This phony |
|---|
| 602 | +manufacturing is applied to all static type variables. |
|---|
| 603 | + |
|---|
| 604 | hunk ./compiler/simplCore/SAT.lhs 367 |
|---|
| 605 | -saTransform :: Id -> CoreExpr -> SatM CoreBind |
|---|
| 606 | -saTransform binder rhs = do |
|---|
| 607 | - r <- getSATInfo binder |
|---|
| 608 | - case r of |
|---|
| 609 | - Just (_, args) | should_transform args |
|---|
| 610 | - -> do |
|---|
| 611 | - -- In order to get strictness information on this new binder |
|---|
| 612 | - -- we need to make sure this stage happens >before< the analysis |
|---|
| 613 | - sat_name <- newSATName |
|---|
| 614 | - let new_rhs = mkNewRhs sat_name args |
|---|
| 615 | - return (NonRec binder new_rhs) |
|---|
| 616 | - _ -> return (Rec [(binder, rhs)]) |
|---|
| 617 | - where |
|---|
| 618 | - should_transform args |
|---|
| 619 | - = staticArgsLength > 1 -- THIS IS THE DECISION POINT |
|---|
| 620 | - where staticArgsLength = length (filter isStatic args) |
|---|
| 621 | +saTransformMaybe :: [Unique] -> Id -> Maybe SATInfo -> [Id] -> CoreExpr -> CoreBind |
|---|
| 622 | +saTransformMaybe uniques binder maybe_arg_staticness rhs_binders rhs_body = |
|---|
| 623 | + case maybe_arg_staticness of |
|---|
| 624 | + Just arg_staticness -> if shouldTransform arg_staticness |
|---|
| 625 | + then saTransform uniques binder arg_staticness rhs_binders rhs_body |
|---|
| 626 | + else untransformed_rhs |
|---|
| 627 | + Nothing -> untransformed_rhs |
|---|
| 628 | + where shouldTransform staticness = (length (filter isStaticValue staticness)) > 1 -- THIS IS THE DECISION POINT |
|---|
| 629 | + untransformed_rhs = Rec [(binder, mkLams rhs_binders rhs_body)] |
|---|
| 630 | hunk ./compiler/simplCore/SAT.lhs 377 |
|---|
| 631 | - (rhs_binders, rhs_body) = collectBinders rhs |
|---|
| 632 | - rhs_val_binders = filter isId rhs_binders |
|---|
| 633 | hunk ./compiler/simplCore/SAT.lhs 378 |
|---|
| 634 | - mkNewRhs name' args |
|---|
| 635 | - = mkLams rhs_binders $ |
|---|
| 636 | - Let (Rec [(bndr', rec_body)]) {-in-} local_body |
|---|
| 637 | +saTransform :: [Unique] -> Id -> SATInfo -> [Id] -> CoreExpr -> CoreBind |
|---|
| 638 | +saTransform (rec_body_name_uniq:uniques) binder arg_staticness rhs_binders rhs_body = NonRec binder new_rhs |
|---|
| 639 | + where |
|---|
| 640 | + -- Running example: foldr |
|---|
| 641 | + -- foldr \alpha \beta c n xs = e, for some e |
|---|
| 642 | + -- arg_staticness = [Static TypeApp, Static TypeApp, Static VarApp, Static VarApp, NonStatic] |
|---|
| 643 | + -- rhs_binders = [\alpha, \beta, c, n, xs] |
|---|
| 644 | + -- rhs_body = e |
|---|
| 645 | + |
|---|
| 646 | + non_static_args, rhs_binders_without_type_capture :: [Var] |
|---|
| 647 | + (non_static_args, rhs_binders_without_type_capture) = processBinders uniques arg_staticness rhs_binders |
|---|
| 648 | hunk ./compiler/simplCore/SAT.lhs 390 |
|---|
| 649 | - non_static_args :: [Var] |
|---|
| 650 | - non_static_args = get_nsa args rhs_val_binders |
|---|
| 651 | - where |
|---|
| 652 | - get_nsa :: [Staticness a] -> [a] -> [a] |
|---|
| 653 | - get_nsa [] _ = [] |
|---|
| 654 | - get_nsa _ [] = [] |
|---|
| 655 | - get_nsa (NotStatic:args) (v:as) = v:get_nsa args as |
|---|
| 656 | - get_nsa (_:args) (_:as) = get_nsa args as |
|---|
| 657 | + processBinders :: [Unique] -> [Staticness App] -> [Var] -> ([Var], [Var]) |
|---|
| 658 | + processBinders _ [] vs = (vs, vs) -- Less arguments were applied we have at the top level: assume the remainder are non-static |
|---|
| 659 | + processBinders _ _ [] = ([], []) -- More static arguments were applied than are immediately visible at the top level |
|---|
| 660 | + processBinders (u:us) (arg:args) (v:vs) = |
|---|
| 661 | + let (nsa_rest, rhswtc_rest) = processBinders us args vs |
|---|
| 662 | + in case arg of |
|---|
| 663 | + NotStatic -> (v : nsa_rest, v : rhswtc_rest) |
|---|
| 664 | + Static (TypeApp _) -> (nsa_rest, (mkTyVar (tyVarName v) (tyVarKind v) `setTyVarUnique` u) : rhswtc_rest) |
|---|
| 665 | + Static (VarApp _) -> (nsa_rest, v : rhswtc_rest) |
|---|
| 666 | + processBinders [] _ _ = panic "processBinders" |
|---|
| 667 | + -- non_static_args = [xs] |
|---|
| 668 | + -- rhs_binders_without_type_capture = [\alpha', \beta', c, n, xs] |
|---|
| 669 | hunk ./compiler/simplCore/SAT.lhs 403 |
|---|
| 670 | - bndr' = mkLocalId name' (exprType rec_body) |
|---|
| 671 | + rec_body_bndr = mkLocalId (mkSystemVarName rec_body_name_uniq (fsLit "sat_worker")) (exprType rec_body) |
|---|
| 672 | + -- rec_body_bndr = sat_worker |
|---|
| 673 | + |
|---|
| 674 | + local_body = mkVarApps (Var rec_body_bndr) non_static_args |
|---|
| 675 | + -- local_body = sat_worker xs |
|---|
| 676 | hunk ./compiler/simplCore/SAT.lhs 409 |
|---|
| 677 | - rec_body = mkLams non_static_args $ |
|---|
| 678 | - Let (NonRec shadow_binder nonrec_rhs) rhs_body |
|---|
| 679 | - nonrec_rhs = mkLams rhs_binders local_body |
|---|
| 680 | - local_body = mkVarApps (Var bndr') non_static_args |
|---|
| 681 | + -- See Note [Binder type capture] |
|---|
| 682 | + nonrec_rhs = mkLams rhs_binders_without_type_capture local_body |
|---|
| 683 | + -- nonrec_rhs = \alpha' beta' c n xs -> sat_worker xs |
|---|
| 684 | hunk ./compiler/simplCore/SAT.lhs 413 |
|---|
| 685 | + -- See Note [Shadow binding] |
|---|
| 686 | + shadow_bndr = mkSysLocal (fsLit "sat_shadow") (getUnique binder) (exprType nonrec_rhs) |
|---|
| 687 | + -- shadow_bndr = sat_shadow |
|---|
| 688 | hunk ./compiler/simplCore/SAT.lhs 417 |
|---|
| 689 | - -- See Note [Shadow binding] |
|---|
| 690 | - shadow_binder = mkSysLocal (fsLit "sat") (getUnique binder) (idType binder) |
|---|
| 691 | + rec_body = mkLams non_static_args $ |
|---|
| 692 | + Let (NonRec shadow_bndr nonrec_rhs) rhs_body |
|---|
| 693 | + -- rec_body = \xs -> let sat_shadow = \alpha' beta' c n xs -> sat_worker xs in e |
|---|
| 694 | + |
|---|
| 695 | + new_rhs = mkLams rhs_binders $ Let (Rec [(rec_body_bndr, rec_body)]) local_body |
|---|
| 696 | + -- new_rhs = \alpha beta c n xs -> |
|---|
| 697 | + -- let sat_worker = (\xs -> let sat_shadow = \alpha' beta' c n xs -> sat_worker xs |
|---|
| 698 | + -- in e) |
|---|
| 699 | + -- in sat_worker xs |
|---|
| 700 | +saTransform [] _ _ _ _ = panic "saTransform" |
|---|
| 701 | hunk ./compiler/simplCore/SAT.lhs 428 |
|---|
| 702 | -isStatic :: Staticness a -> Bool |
|---|
| 703 | -isStatic NotStatic = False |
|---|
| 704 | -isStatic _ = True |
|---|
| 705 | +isStaticValue :: Staticness App -> Bool |
|---|
| 706 | +isStaticValue (Static (VarApp _)) = True |
|---|
| 707 | +isStaticValue _ = False |
|---|
| 708 | } |
|---|
| 709 | |
|---|
| 710 | Context: |
|---|
| 711 | |
|---|
| 712 | [Fix warnings in TcTyClsDecls |
|---|
| 713 | Ian Lynagh <igloo@earth.li>**20080606213239] |
|---|
| 714 | [Fix warnings in TcHsType |
|---|
| 715 | Ian Lynagh <igloo@earth.li>**20080606204854] |
|---|
| 716 | [Fix warnings in TcSimplify |
|---|
| 717 | Ian Lynagh <igloo@earth.li>**20080606202435] |
|---|
| 718 | [Fix warnings in TcRules |
|---|
| 719 | Ian Lynagh <igloo@earth.li>**20080606200800] |
|---|
| 720 | [Fix warnings in TcInstDcls |
|---|
| 721 | Ian Lynagh <igloo@earth.li>**20080606200534] |
|---|
| 722 | [Fix warnings in TcMType |
|---|
| 723 | Ian Lynagh <igloo@earth.li>**20080606194931] |
|---|
| 724 | [Fix warnings in TcForeign |
|---|
| 725 | Ian Lynagh <igloo@earth.li>**20080606192610] |
|---|
| 726 | [Fix warnings in TcClassDcl |
|---|
| 727 | Ian Lynagh <igloo@earth.li>**20080606191413] |
|---|
| 728 | [Fix a bug in eqPatType |
|---|
| 729 | Ian Lynagh <igloo@earth.li>**20080606184631 |
|---|
| 730 | One of the conditions we were checking was |
|---|
| 731 | t2 `eqPatLType` t2 |
|---|
| 732 | rather than |
|---|
| 733 | t1 `eqPatLType` t2 |
|---|
| 734 | ] |
|---|
| 735 | [Show whether DEBUG is on in ghc --info |
|---|
| 736 | Ian Lynagh <igloo@earth.li>**20080606184415] |
|---|
| 737 | [Use -fno-toplevel-reorder with gcc >= 4.2 on sparc-solaris; fixes trac #2312 |
|---|
| 738 | Ian Lynagh <igloo@earth.li>**20080606133817] |
|---|
| 739 | [Teach configure about amd64/NetBSD; fixes trac #2348 |
|---|
| 740 | Ian Lynagh <igloo@earth.li>**20080606130955] |
|---|
| 741 | [Enable the mangler for netbsd/amd64; fixes trac #2347 |
|---|
| 742 | Ian Lynagh <igloo@earth.li>**20080606130706] |
|---|
| 743 | [Improve documentation for standalone deriving |
|---|
| 744 | simonpj@microsoft.com**20080606122459] |
|---|
| 745 | [Fix Trac #2334: validity checking for type families |
|---|
| 746 | simonpj@microsoft.com**20080606121730 |
|---|
| 747 | |
|---|
| 748 | When we deal with a family-instance declaration (TcTyClsDecls.tcFamInstDecl) |
|---|
| 749 | we must check the TyCon for validity; for example, that a newtype has exactly |
|---|
| 750 | one field. That is done all-at-once for normal declarations, and had been |
|---|
| 751 | forgotten altogether for families. |
|---|
| 752 | |
|---|
| 753 | I also refactored the interface to tcFamInstDecl1 slightly. |
|---|
| 754 | |
|---|
| 755 | |
|---|
| 756 | A slightly separate matter: if there's an error in family instances |
|---|
| 757 | (e.g. overlap) we get a confusing error message cascade if we attempt to |
|---|
| 758 | deal with 'deriving' clauses too; this patch bales out earlier in that case. |
|---|
| 759 | |
|---|
| 760 | |
|---|
| 761 | Another slightly separate matter: standalone deriving for family |
|---|
| 762 | instances can legitimately have more specific types, just like normal |
|---|
| 763 | data decls. For example |
|---|
| 764 | |
|---|
| 765 | data instance F [a] = ... |
|---|
| 766 | deriving instance (Eq a, Eq b) => Eq (F [(a,b)]) |
|---|
| 767 | |
|---|
| 768 | So tcLookupFamInstExact can a bit more forgiving than it was. |
|---|
| 769 | |
|---|
| 770 | |
|---|
| 771 | ] |
|---|
| 772 | [Vital follow-up to fix of Trac #2045 |
|---|
| 773 | simonpj@microsoft.com**20080605165434 |
|---|
| 774 | |
|---|
| 775 | Sorry -- my 'validate' didn't work right and I missed a trick. |
|---|
| 776 | This patch must accompany |
|---|
| 777 | |
|---|
| 778 | * Fix Trac #2045: use big-tuple machiney for implication constraints |
|---|
| 779 | |
|---|
| 780 | |
|---|
| 781 | ] |
|---|
| 782 | [Fix Trac #2045: use big-tuple machiney for implication constraints |
|---|
| 783 | simonpj@microsoft.com**20080605145617] |
|---|
| 784 | [Comments only |
|---|
| 785 | simonpj@microsoft.com**20080605134743] |
|---|
| 786 | [Desugar multiple polymorphic bindings more intelligently |
|---|
| 787 | simonpj@microsoft.com**20080605124423 |
|---|
| 788 | |
|---|
| 789 | Occasionally people write very large recursive groups of definitions. |
|---|
| 790 | In general we desugar these to a single definition that binds tuple, |
|---|
| 791 | plus lots of tuple selectors. But that code has quadratic size, which |
|---|
| 792 | can be bad. |
|---|
| 793 | |
|---|
| 794 | This patch adds a new case to the desugaring of bindings, for the |
|---|
| 795 | situation where there are lots of polymorphic variables, but no |
|---|
| 796 | dictionaries. (Dictionaries force us into the general case.) |
|---|
| 797 | |
|---|
| 798 | See Note [Abstracting over tyvars only]. |
|---|
| 799 | |
|---|
| 800 | The extra behaviour can be disabled with the (static) flag |
|---|
| 801 | |
|---|
| 802 | -fno-ds-multi-tyvar |
|---|
| 803 | |
|---|
| 804 | in case we want to experiment with switching it on or off. There is |
|---|
| 805 | essentially-zero effect on the nofib suite though. |
|---|
| 806 | |
|---|
| 807 | I was provoked into doing this by Trac #1136. In fact I'm not sure |
|---|
| 808 | it's the real cause of the problem there, but it's a good idea anyway. |
|---|
| 809 | |
|---|
| 810 | ] |
|---|
| 811 | [Add non-recursive let-bindings for types |
|---|
| 812 | simonpj@microsoft.com**20080605123612 |
|---|
| 813 | |
|---|
| 814 | This patch adds to Core the ability to say |
|---|
| 815 | let a = Int in <body> |
|---|
| 816 | where 'a' is a type variable. That is: a type-let. |
|---|
| 817 | See Note [Type let] in CoreSyn. |
|---|
| 818 | |
|---|
| 819 | * The binding is always non-recursive |
|---|
| 820 | * The simplifier immediately eliminates it by substitution |
|---|
| 821 | |
|---|
| 822 | So in effect a type-let is just a delayed substitution. This is convenient |
|---|
| 823 | in a couple of places in the desugarer, one existing (see the call to |
|---|
| 824 | CoreTyn.mkTyBind in DsUtils), and one that's in the next upcoming patch. |
|---|
| 825 | |
|---|
| 826 | The first use in the desugarer was previously encoded as |
|---|
| 827 | (/\a. <body>) Int |
|---|
| 828 | rather that eagerly substituting, but that was horrid because Core Lint |
|---|
| 829 | had do "know" that a=Int inside <body> else it would bleat. Expressing |
|---|
| 830 | it directly as a 'let' seems much nicer. |
|---|
| 831 | |
|---|
| 832 | |
|---|
| 833 | ] |
|---|
| 834 | [Fix Trac #2339: reify (mkName "X") |
|---|
| 835 | simonpj@microsoft.com**20080604150207] |
|---|
| 836 | [Fix Trac #2310: result type signatures are not supported any more |
|---|
| 837 | simonpj@microsoft.com**20080604145115 |
|---|
| 838 | |
|---|
| 839 | We have not supported "result type signatures" for some time, but |
|---|
| 840 | using one in the wrong way caused a crash. This patch tidies it up. |
|---|
| 841 | |
|---|
| 842 | ] |
|---|
| 843 | [Sort modules and packages in debug print (reduce test wobbles) |
|---|
| 844 | simonpj@microsoft.com**20080604144049 |
|---|
| 845 | |
|---|
| 846 | This affects only the debug print TcRnDriver.pprTcGblEnv, and eliminates |
|---|
| 847 | test-suite wobbling (affected me for tc168, tc231) |
|---|
| 848 | |
|---|
| 849 | ] |
|---|
| 850 | [Fix #2334: tyvar binders can have Names inside (equality predicates) |
|---|
| 851 | Simon Marlow <marlowsd@gmail.com>**20080604113002] |
|---|
| 852 | [fix pointer tagging bug in removeIndirections (fixes stableptr003) |
|---|
| 853 | Simon Marlow <marlowsd@gmail.com>**20080604105458] |
|---|
| 854 | [Fix unreg build |
|---|
| 855 | Simon Marlow <marlowsd@gmail.com>**20080604093653] |
|---|
| 856 | [tiny tweak to the stack squeezing heuristic (fixes cg060) |
|---|
| 857 | Simon Marlow <marlowsd@gmail.com>**20080604091244] |
|---|
| 858 | [MacOS installer: don't quote XCODE_EXTRA_CONFIGURE_ARGS |
|---|
| 859 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080604021321] |
|---|
| 860 | [MacOS installer: terminate build on intermediate failure |
|---|
| 861 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080604020155] |
|---|
| 862 | [Fix Trac #2331 (error message suggestion) |
|---|
| 863 | simonpj@microsoft.com**20080603134645] |
|---|
| 864 | [Improve documentation of RULES |
|---|
| 865 | simonpj@microsoft.com**20080530155137] |
|---|
| 866 | [Improve documentation for INLINE pragma |
|---|
| 867 | simonpj@microsoft.com**20080530133307] |
|---|
| 868 | [add debugDumpTcRn and use it for some debugging output |
|---|
| 869 | Simon Marlow <marlowsd@gmail.com>**20080603112030] |
|---|
| 870 | [Turn "NOTE: Simplifier still going..." message into a WARN() |
|---|
| 871 | Simon Marlow <marlowsd@gmail.com>**20080603105431] |
|---|
| 872 | [remove the "expanding to size" messages |
|---|
| 873 | Simon Marlow <marlowsd@gmail.com>**20080603094546] |
|---|
| 874 | [New flag: -dno-debug-output |
|---|
| 875 | Simon Marlow <marlowsd@gmail.com>**20080603082924 |
|---|
| 876 | From the docs: |
|---|
| 877 | <para>Suppress any unsolicited debugging output. When GHC |
|---|
| 878 | has been built with the <literal>DEBUG</literal> option it |
|---|
| 879 | occasionally emits debug output of interest to developers. |
|---|
| 880 | The extra output can confuse the testing framework and |
|---|
| 881 | cause bogus test failures, so this flag is provided to |
|---|
| 882 | turn it off.</para> |
|---|
| 883 | ] |
|---|
| 884 | [-no-link-chk has been a no-op since at least 6.0; remove it |
|---|
| 885 | Simon Marlow <marlowsd@gmail.com>**20080603082041] |
|---|
| 886 | [-no-link-chk is a relic |
|---|
| 887 | Simon Marlow <marlowsd@gmail.com>**20080603081904] |
|---|
| 888 | [Shorten debug messages |
|---|
| 889 | simonpj@microsoft.com**20080603121208] |
|---|
| 890 | [Fix minor layout issue (whitespace only) |
|---|
| 891 | simonpj@microsoft.com**20080602130611] |
|---|
| 892 | [MacOS installer: clean up Xcode project spec |
|---|
| 893 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080602070705] |
|---|
| 894 | [Fix validate: -Werror bug in patch "Replacing copyins and copyouts..." |
|---|
| 895 | Simon Marlow <marlowsd@gmail.com>**20080602144945] |
|---|
| 896 | [FIX #2231: add missing stack check when applying a PAP |
|---|
| 897 | Simon Marlow <marlowsd@gmail.com>**20080602143726 |
|---|
| 898 | This program makes a PAP with 203 arguments :-) |
|---|
| 899 | ] |
|---|
| 900 | [-fforce-recomp should be unnecessary for Main.hs in stage[23] now |
|---|
| 901 | Simon Marlow <marlowsd@gmail.com>**20080602133801] |
|---|
| 902 | [Missing import in C-- parser |
|---|
| 903 | dias@eecs.harvard.edu**20080602103156] |
|---|
| 904 | [TAG 2008-06-01 |
|---|
| 905 | Ian Lynagh <igloo@earth.li>**20080601155241] |
|---|
| 906 | [Fix a bug to do with recursive modules in one-shot mode |
|---|
| 907 | Simon Marlow <marlowsd@gmail.com>**20080530145349 |
|---|
| 908 | The problem was that when loading interface files in checkOldIface, we |
|---|
| 909 | were not passing the If monad the mutable variable for use when |
|---|
| 910 | looking up entities in the *current* module, with the result that the |
|---|
| 911 | knots wouldn't be tied properly, and some instances of TyCons would |
|---|
| 912 | be incorrectly abstract. |
|---|
| 913 | |
|---|
| 914 | This bug has subtle effects: for example, recompiling a module without |
|---|
| 915 | making any changes might lead to a slightly different result (noticed |
|---|
| 916 | due to the new interface-file fingerprints). The bug doesn't lead to |
|---|
| 917 | any direct failures that we're aware of. |
|---|
| 918 | ] |
|---|
| 919 | [Replacing copyins and copyouts with data-movement instructions |
|---|
| 920 | dias@eecs.harvard.edu**20080529160545 |
|---|
| 921 | |
|---|
| 922 | o Moved BlockId stuff to a new file to avoid module recursion |
|---|
| 923 | o Defined stack areas for parameter-passing locations and spill slots |
|---|
| 924 | o Part way through replacing copy in and copy out nodes |
|---|
| 925 | - added movement instructions for stack pointer |
|---|
| 926 | - added movement instructions for call and return parameters |
|---|
| 927 | (but not with the proper calling conventions) |
|---|
| 928 | o Inserting spills and reloads for proc points is now procpoint-aware |
|---|
| 929 | (it was relying on the presence of a CopyIn node as a proxy for |
|---|
| 930 | procpoint knowledge) |
|---|
| 931 | o Changed ZipDataflow to expect AGraphs (instead of being polymorphic in |
|---|
| 932 | the type of graph) |
|---|
| 933 | ] |
|---|
| 934 | [disable SAT for now (see #2321) |
|---|
| 935 | Simon Marlow <marlowsd@gmail.com>**20080530112043] |
|---|
| 936 | [Add dph packages to build system |
|---|
| 937 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080530050340] |
|---|
| 938 | [PackageMaker target depends on deployment target |
|---|
| 939 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080529041820] |
|---|
| 940 | [hs_add_root: use use rts_lock()/rts_unlock() for a bit of extra safety |
|---|
| 941 | Simon Marlow <marlowsd@gmail.com>**20080529111023] |
|---|
| 942 | [Make it less fatal to not call ioManagerStart() |
|---|
| 943 | Simon Marlow <marlowsd@gmail.com>**20080529110957 |
|---|
| 944 | For clients that forget to do hs_add_root() |
|---|
| 945 | ] |
|---|
| 946 | [FIX BUILD with GHC 6.4.x |
|---|
| 947 | Simon Marlow <marlowsd@gmail.com>**20080529132544] |
|---|
| 948 | [FIX #1970: ghci -hide-all-packages should work |
|---|
| 949 | Simon Marlow <marlowsd@gmail.com>**20080528154528] |
|---|
| 950 | [Cmm back end upgrades |
|---|
| 951 | dias@eecs.harvard.edu**20080529094827 |
|---|
| 952 | |
|---|
| 953 | Several changes in this patch, partially bug fixes, partially new code: |
|---|
| 954 | o bug fixes in ZipDataflow |
|---|
| 955 | - added some checks to verify that facts converge |
|---|
| 956 | - removed some erroneous checks of convergence on entry nodes |
|---|
| 957 | - added some missing applications of transfer functions |
|---|
| 958 | o changed dataflow clients to use ZipDataflow, making ZipDataflow0 obsolete |
|---|
| 959 | o eliminated DFA monad (no need for separate analysis and rewriting monads with ZipDataflow) |
|---|
| 960 | o started stack layout changes |
|---|
| 961 | - no longer generating CopyIn and CopyOut nodes (not yet fully expunged though) |
|---|
| 962 | - still not using proper calling conventions |
|---|
| 963 | o simple new optimizations: |
|---|
| 964 | - common block elimination |
|---|
| 965 | -- have not yet tried to move the Adams opt out of CmmProcPointZ |
|---|
| 966 | - block concatenation |
|---|
| 967 | o piped optimization fuel up to the HscEnv |
|---|
| 968 | - can be limited by a command-line flag |
|---|
| 969 | - not tested, and probably not yet properly used by clients |
|---|
| 970 | o added unique supply to FuelMonad, also lifted unique supply to DFMonad |
|---|
| 971 | ] |
|---|
| 972 | [make framework-pkg needs to cope with missing DSTROOT |
|---|
| 973 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080527113007] |
|---|
| 974 | [Use MD5 checksums for recompilation checking (fixes #1372, #1959) |
|---|
| 975 | Simon Marlow <marlowsd@gmail.com>**20080528125258 |
|---|
| 976 | |
|---|
| 977 | This is a much more robust way to do recompilation checking. The idea |
|---|
| 978 | is to create a fingerprint of the ABI of an interface, and track |
|---|
| 979 | dependencies by recording the fingerprints of ABIs that a module |
|---|
| 980 | depends on. If any of those ABIs have changed, then we need to |
|---|
| 981 | recompile. |
|---|
| 982 | |
|---|
| 983 | In bug #1372 we weren't recording dependencies on package modules, |
|---|
| 984 | this patch fixes that by recording fingerprints of package modules |
|---|
| 985 | that we depend on. Within a package there is still fine-grained |
|---|
| 986 | recompilation avoidance as before. |
|---|
| 987 | |
|---|
| 988 | We currently use MD5 for fingerprints, being a good compromise between |
|---|
| 989 | efficiency and security. We're not worried about attackers, but we |
|---|
| 990 | are worried about accidental collisions. |
|---|
| 991 | |
|---|
| 992 | All the MD5 sums do make interface files a bit bigger, but compile |
|---|
| 993 | times on the whole are about the same as before. Recompilation |
|---|
| 994 | avoidance should be a bit more accurate than in 6.8.2 due to fixing |
|---|
| 995 | #1959, especially when using -O. |
|---|
| 996 | ] |
|---|
| 997 | [don't make -ddump-if-trace imply -no-recomp |
|---|
| 998 | Simon Marlow <marlowsd@gmail.com>**20080523140719] |
|---|
| 999 | [clarify that unsafeCoerce# :: Float# -> Int# is not safe (see #2209) |
|---|
| 1000 | Simon Marlow <marlowsd@gmail.com>**20080527090244] |
|---|
| 1001 | [when linking, ignore unknown .reloc section that appeared in gcc 3.4.5(?) |
|---|
| 1002 | dias@eecs.harvard.edu**20080528121450] |
|---|
| 1003 | [TAG 2008-05-28 |
|---|
| 1004 | Ian Lynagh <igloo@earth.li>**20080528003600] |
|---|
| 1005 | [Simplify specifying that some libraries need to use the build.* rules |
|---|
| 1006 | Ian Lynagh <igloo@earth.li>**20080526160218 |
|---|
| 1007 | Now you just add them to SUBDIRS_BUILD instead of SUBDIRS. |
|---|
| 1008 | ] |
|---|
| 1009 | [Cope with libraries in libraries/foo/bar rather than just libraries/foo |
|---|
| 1010 | Ian Lynagh <igloo@earth.li>**20080526135612 |
|---|
| 1011 | You need to use the build.* rules rather than the make.* rules, though. |
|---|
| 1012 | ] |
|---|
| 1013 | [Fix fwrite$UNIX2003 symbols when cross-compiling for Tiger |
|---|
| 1014 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080526073546 |
|---|
| 1015 | - When compiling with -mmacos-deployment-target=10.4, we need |
|---|
| 1016 | --no-builtin-fprintf, as the use of GCC's builtin function |
|---|
| 1017 | optimisation for fprintf together with #include "PosixSource" in the |
|---|
| 1018 | RTS leads to the use of fwrite$UNIX2003 (with GCC 4.0.1 on Mac OS X |
|---|
| 1019 | 10.5.2). |
|---|
| 1020 | ] |
|---|
| 1021 | [document :source command for GHCi, point to Haskell wiki |
|---|
| 1022 | claus.reinke@talk21.com**20080501205252 |
|---|
| 1023 | |
|---|
| 1024 | as discussed in this thread: |
|---|
| 1025 | http://www.haskell.org/pipermail/glasgow-haskell-users/2008-April/014614.html |
|---|
| 1026 | |
|---|
| 1027 | ] |
|---|
| 1028 | [Do some stack fiddling in stg_unblockAsyncExceptionszh_ret |
|---|
| 1029 | Ian Lynagh <igloo@earth.li>**20080523032508 |
|---|
| 1030 | This fixes a segfault in #1657 |
|---|
| 1031 | ] |
|---|
| 1032 | [Fix warnings in TcTyDecls |
|---|
| 1033 | Ian Lynagh <igloo@earth.li>**20080521004251] |
|---|
| 1034 | [Fix whitespace in TcTyDecls |
|---|
| 1035 | Ian Lynagh <igloo@earth.li>**20080521003935] |
|---|
| 1036 | [Ensure runhaskell is rebuild in stage2 |
|---|
| 1037 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080522044900] |
|---|
| 1038 | [Fix Trac #1061: refactor handling of default methods |
|---|
| 1039 | simonpj@microsoft.com**20080521130028 |
|---|
| 1040 | |
|---|
| 1041 | In an instance declaration, omitted methods get a definition that |
|---|
| 1042 | uses the default method. We used to generate source code and feed it |
|---|
| 1043 | to the type checker. But tc199 shows that is a bad idea -- see |
|---|
| 1044 | Note [Default methods in instances] in TcClassDcl. |
|---|
| 1045 | |
|---|
| 1046 | So this patch refactors to insteadl all us to generate the |
|---|
| 1047 | *post* typechecked code directly for default methods. |
|---|
| 1048 | |
|---|
| 1049 | ] |
|---|
| 1050 | [Comment typo |
|---|
| 1051 | simonpj@microsoft.com**20080521130016] |
|---|
| 1052 | [Fix Trac #2292: improve error message for lone signatures |
|---|
| 1053 | simonpj@microsoft.com**20080520143048 |
|---|
| 1054 | |
|---|
| 1055 | Refactoring reduces code and improves error messages |
|---|
| 1056 | |
|---|
| 1057 | ] |
|---|
| 1058 | [Fix Trac #2293: improve error reporting for duplicate declarations |
|---|
| 1059 | simonpj@microsoft.com**20080520143006] |
|---|
| 1060 | [Tuples cannot contain unboxed types |
|---|
| 1061 | simonpj@microsoft.com**20080515115332 |
|---|
| 1062 | |
|---|
| 1063 | This bug allowed, for example |
|---|
| 1064 | |
|---|
| 1065 | f = let x = ( 1#, 'x' ) in x |
|---|
| 1066 | |
|---|
| 1067 | which is ill-typed because you can't put an unboxed value in a tuple. |
|---|
| 1068 | Core Lint fails on this program. |
|---|
| 1069 | |
|---|
| 1070 | The patch makes the program be rejcted up-front. |
|---|
| 1071 | |
|---|
| 1072 | |
|---|
| 1073 | ] |
|---|
| 1074 | [Make TcType warning-free |
|---|
| 1075 | Ian Lynagh <igloo@earth.li>**20080520214852] |
|---|
| 1076 | [Teach push-all how to send as well |
|---|
| 1077 | Ian Lynagh <igloo@earth.li>**20080517142112] |
|---|
| 1078 | [Make TcUnify warning-free |
|---|
| 1079 | Ian Lynagh <igloo@earth.li>**20080519111100] |
|---|
| 1080 | [Fix a comment typo |
|---|
| 1081 | Ian Lynagh <igloo@earth.li>**20080519094126] |
|---|
| 1082 | [Detab TcUnify |
|---|
| 1083 | Ian Lynagh <igloo@earth.li>**20080519094056] |
|---|
| 1084 | [FIX #1955: confusion between .exe.hp and .hp suffixes for heap profiles |
|---|
| 1085 | Simon Marlow <simonmar@microsoft.com>**20080519125101 |
|---|
| 1086 | Now we use <prog>.hp and <prog>.prof consistently. |
|---|
| 1087 | ] |
|---|
| 1088 | [sort the output of :show packages |
|---|
| 1089 | Simon Marlow <marlowsd@gmail.com>**20080520084221] |
|---|
| 1090 | [update the "perf" settings to match the default |
|---|
| 1091 | Simon Marlow <marlowsd@gmail.com>**20080520080535] |
|---|
| 1092 | [use -O2 for libraries and stage2 compiler by default |
|---|
| 1093 | Simon Marlow <marlowsd@gmail.com>**20080520080525] |
|---|
| 1094 | [bump GHC's maximum stack size to 64Mb (see #2002) |
|---|
| 1095 | Simon Marlow <marlowsd@gmail.com>**20080519125333] |
|---|
| 1096 | [Add -Odph |
|---|
| 1097 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080520031913 |
|---|
| 1098 | |
|---|
| 1099 | This is the optimisation level recommended when compiling DPH programs. At the |
|---|
| 1100 | moment, it is equivalent to -O2 -fno-method-sharing -fdicts-cheap |
|---|
| 1101 | -fmax-simplifier-iterations20 -fno-spec-constr-threshold. |
|---|
| 1102 | ] |
|---|
| 1103 | [Make -f[no-]method-sharing a dynamic flag |
|---|
| 1104 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080520025956 |
|---|
| 1105 | |
|---|
| 1106 | We want -Odph to be a dynamic flag and that should imply -fno-method-sharing. |
|---|
| 1107 | This doesn't add a lot of complexity. |
|---|
| 1108 | ] |
|---|
| 1109 | [documentation for ZipDataflow |
|---|
| 1110 | Norman Ramsey <nr@eecs.harvard.edu>**20080520032454] |
|---|
| 1111 | [Make TcBinds warning-free |
|---|
| 1112 | Ian Lynagh <igloo@earth.li>**20080518133140] |
|---|
| 1113 | [Detab TcBinds |
|---|
| 1114 | Ian Lynagh <igloo@earth.li>**20080518125606] |
|---|
| 1115 | [Move the register-inplace special-case stuff into the ghc-prim package |
|---|
| 1116 | Ian Lynagh <igloo@earth.li>**20080517002224] |
|---|
| 1117 | [Libraries Makefile Hack for ndp |
|---|
| 1118 | Ian Lynagh <igloo@earth.li>**20080516235818 |
|---|
| 1119 | We use the "build" rather than "make" target |
|---|
| 1120 | ] |
|---|
| 1121 | [When building libraries, we need to register them if we use the "build" targets |
|---|
| 1122 | Ian Lynagh <igloo@earth.li>**20080516235352 |
|---|
| 1123 | We currently only use the "make" targets, which already register the package. |
|---|
| 1124 | ] |
|---|
| 1125 | [Add dummy LICENSE file to make Cabal go through |
|---|
| 1126 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080517025351 |
|---|
| 1127 | |
|---|
| 1128 | Add a LICENSE file that just points to the GHC license. |
|---|
| 1129 | ] |
|---|
| 1130 | [FIX #2257: timer_settime() hangs during configure |
|---|
| 1131 | Simon Marlow <marlowsd@gmail.com>**20080516130045 |
|---|
| 1132 | On a 2.6.24 Linux kernel, it appears that timer_settime() for |
|---|
| 1133 | CLOCK_REALTIME is sometimes hanging for a random amount of time when |
|---|
| 1134 | given a very small interval (we were using 1ns). Using 1ms seems to |
|---|
| 1135 | be fine. Also I installed a 1-second timeout to catch hangs in the |
|---|
| 1136 | future. |
|---|
| 1137 | ] |
|---|
| 1138 | [validate fix: eliminate a warning |
|---|
| 1139 | Simon Marlow <marlowsd@gmail.com>**20080516095947] |
|---|
| 1140 | [validate fix: eliminate a warning on non-Windows |
|---|
| 1141 | Simon Marlow <marlowsd@gmail.com>**20080515142518] |
|---|
| 1142 | [FIX #2014: Template Haskell w/ mutually recursive modules |
|---|
| 1143 | Simon Marlow <marlowsd@gmail.com>**20080515134515 |
|---|
| 1144 | Try to load interfaces in getLinkDeps |
|---|
| 1145 | ] |
|---|
| 1146 | [Document ghc-pkg find-module, substring matching, and multi-field selection |
|---|
| 1147 | claus.reinke@talk21.com**20080501152700 |
|---|
| 1148 | |
|---|
| 1149 | Documentation and examples taken from |
|---|
| 1150 | - ghc-pkg/Main.hs usageHeader |
|---|
| 1151 | - patch: FIX 1463 (implement 'ghc-pkg find-module') |
|---|
| 1152 | - patch: FIX #1839, #1463, by supporting ghc-pkg bulk queries |
|---|
| 1153 | with substring matching |
|---|
| 1154 | |
|---|
| 1155 | |
|---|
| 1156 | ] |
|---|
| 1157 | [Improve the treatment of 'seq' (Trac #2273) |
|---|
| 1158 | simonpj@microsoft.com**20080516085149 |
|---|
| 1159 | |
|---|
| 1160 | Trac #2273 showed a case in which 'seq' didn't cure the space leak |
|---|
| 1161 | it was supposed to. This patch does two things to help |
|---|
| 1162 | |
|---|
| 1163 | a) It removes a now-redundant special case in Simplify, which |
|---|
| 1164 | switched off the case-binder-swap in the early stages. This |
|---|
| 1165 | isn't necessary any more because FloatOut has improved since |
|---|
| 1166 | the Simplify code was written. And switching off the binder-swap |
|---|
| 1167 | is harmful for seq. |
|---|
| 1168 | |
|---|
| 1169 | However fix (a) is a bit fragile, so I did (b) too: |
|---|
| 1170 | |
|---|
| 1171 | b) Desugar 'seq' specially. See Note [Desugaring seq (2)] in DsUtils |
|---|
| 1172 | This isn't very robust either, since it's defeated by abstraction, |
|---|
| 1173 | but that's not something GHC can fix; the programmer should use |
|---|
| 1174 | a let! instead. |
|---|
| 1175 | |
|---|
| 1176 | ] |
|---|
| 1177 | [don't rebuild PrimEnv if genprimopcode and/or primops.txt don't exist |
|---|
| 1178 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080515230405 |
|---|
| 1179 | |
|---|
| 1180 | This helps if, for example, you want to build the Core tools on a machine that doesn't have a GHC build tree, and have a pre-existing copy of PrimEnv.hs. |
|---|
| 1181 | ] |
|---|
| 1182 | [Fix a division-by-zero when +RTS -V0 is given |
|---|
| 1183 | Ian Lynagh <igloo@earth.li>**20080426184355 |
|---|
| 1184 | In delayzh_fast we act as if tickInterval was 50, not 0. |
|---|
| 1185 | ] |
|---|
| 1186 | [Cabalize ext-core tools |
|---|
| 1187 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080514235341 |
|---|
| 1188 | |
|---|
| 1189 | I cabalized the ext-core tools, so now they can be built as |
|---|
| 1190 | a library. The driver program has to be built separately. |
|---|
| 1191 | |
|---|
| 1192 | Also updated genprimopcode to reflect the new module hierarchy |
|---|
| 1193 | for the Core tools. |
|---|
| 1194 | ] |
|---|
| 1195 | [Remove Distribution.Compat.Char from compat again |
|---|
| 1196 | Ian Lynagh <igloo@earth.li>**20080514125152 |
|---|
| 1197 | Cabal now does this differently. |
|---|
| 1198 | ] |
|---|
| 1199 | [Fix an assertion |
|---|
| 1200 | Ian Lynagh <igloo@earth.li>**20080426110115 |
|---|
| 1201 | We were checking that a pointer was correctly tagged, but after we had |
|---|
| 1202 | untagged it. |
|---|
| 1203 | ] |
|---|
| 1204 | [Fix sin/cos/tan on x86; trac #2059 |
|---|
| 1205 | Ian Lynagh <igloo@earth.li>**20080503000841 |
|---|
| 1206 | If the value is > 2^63 then we need to work out its value mod 2pi, |
|---|
| 1207 | and apply the operation to that instead. |
|---|
| 1208 | ] |
|---|
| 1209 | [FIX #1288: GHCi wasn't adding the @n suffix to stdcalls on Windows |
|---|
| 1210 | Simon Marlow <simonmar@microsoft.com>**20080514092742] |
|---|
| 1211 | [FIX #2276: foreign import stdcall "&foo" doesn't work |
|---|
| 1212 | Simon Marlow <simonmar@microsoft.com>**20080514082422 |
|---|
| 1213 | This turned out not to be too hard, just a matter of figuring out the |
|---|
| 1214 | correct argument list size by peeking inside FunPtr's type argument, |
|---|
| 1215 | and in the C backend we have to emit an appropriate prototype for the label. |
|---|
| 1216 | ] |
|---|
| 1217 | [Use -fffi when compiling Cabal stuff with the bootstrapping compiler |
|---|
| 1218 | Ian Lynagh <igloo@earth.li>**20080513211128] |
|---|
| 1219 | [Use zipLazy from Util in VectType, rather than defining our own lazy_zip |
|---|
| 1220 | Ian Lynagh <igloo@earth.li>**20080513202154] |
|---|
| 1221 | [Add a type signature to help GHC 6.4 |
|---|
| 1222 | Ian Lynagh <igloo@earth.li>**20080513200641 |
|---|
| 1223 | Needed in lieu of -XRelaxedPolyRec |
|---|
| 1224 | ] |
|---|
| 1225 | [Rewrite zipLazy to be warning-free for GHC 6.4 |
|---|
| 1226 | Ian Lynagh <igloo@earth.li>**20080513193901] |
|---|
| 1227 | [Add Distribution.Compat.Char to compat |
|---|
| 1228 | Ian Lynagh <igloo@earth.li>**20080513192243] |
|---|
| 1229 | [Add Distribution.Compat.Exception to the compat library |
|---|
| 1230 | Ian Lynagh <igloo@earth.li>**20080513190022] |
|---|
| 1231 | [Fix spelling of nonexistEnt |
|---|
| 1232 | Ian Lynagh <igloo@earth.li>**20080513135158] |
|---|
| 1233 | [FIX #1641: don't add auto sccs to compiler-generated bindings |
|---|
| 1234 | Simon Marlow <marlowsd@gmail.com>**20080513084400 |
|---|
| 1235 | I also changed con2tag_Foo and related names to follow the standard |
|---|
| 1236 | practice of prefixing $ to compiler-generated names, so now we have |
|---|
| 1237 | $con2tag_Foo. |
|---|
| 1238 | ] |
|---|
| 1239 | [Fix the Windows build; the new Cabal doesn't like --prefix=/foo |
|---|
| 1240 | Ian Lynagh <igloo@earth.li>**20080512170507] |
|---|
| 1241 | [Pull the configure options out into a variable in libraries/Makefile |
|---|
| 1242 | Ian Lynagh <igloo@earth.li>**20080511203932] |
|---|
| 1243 | [typo in rules example. spotted by vixey@#haskell |
|---|
| 1244 | Don Stewart <dons@galois.com>**20080512182435] |
|---|
| 1245 | [Fixes to via-C prototype generation (FIX BUILD on Windows) |
|---|
| 1246 | Simon Marlow <simonmar@microsoft.com>**20080512110643 |
|---|
| 1247 | |
|---|
| 1248 | Previously we declared all external labels with type StgWord[], |
|---|
| 1249 | because the same label might be used at different types in the same |
|---|
| 1250 | file, e.g. if there are multiple foreign import declarations for the |
|---|
| 1251 | same function. However, we have to declare called functions with the |
|---|
| 1252 | right type on Windows, because this is the only way to make the |
|---|
| 1253 | compiler add the appropriate '@n' suffix for stdcall functions. |
|---|
| 1254 | |
|---|
| 1255 | Related to this is the reason we were getting mangler complaints |
|---|
| 1256 | (epilogue mangling) when compiling the RTS with -fvia-C. The function |
|---|
| 1257 | barf() doesn't return, but we had lost that information by declaring |
|---|
| 1258 | our own prototypes, and so gcc was generating extra code after the |
|---|
| 1259 | call to barf(). |
|---|
| 1260 | |
|---|
| 1261 | For more details see |
|---|
| 1262 | http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/PprC |
|---|
| 1263 | ] |
|---|
| 1264 | [doc tweak |
|---|
| 1265 | Simon Marlow <marlowsd@gmail.com>**20080512104030] |
|---|
| 1266 | [FIX #2234: don't generate <prog>.prof unless we're going to put something in it |
|---|
| 1267 | Simon Marlow <marlowsd@gmail.com>**20080512104020] |
|---|
| 1268 | [FIX #1861: floating-point constants for infinity and NaN in via-C |
|---|
| 1269 | Simon Marlow <marlowsd@gmail.com>**20080512103847] |
|---|
| 1270 | [Tell the mangler how to mangle for amd64/freebsd; fixes trac #2072 |
|---|
| 1271 | Ian Lynagh <igloo@earth.li>**20080511182011] |
|---|
| 1272 | [Follow distPref changes in Cabal |
|---|
| 1273 | Ian Lynagh <igloo@earth.li>**20080511144539] |
|---|
| 1274 | [Follow Cabal changes in ghci/Linker |
|---|
| 1275 | Ian Lynagh <igloo@earth.li>**20080511005253] |
|---|
| 1276 | [Follow changes in Cabal |
|---|
| 1277 | Ian Lynagh <igloo@earth.li>**20080510225552] |
|---|
| 1278 | [Remove redundant imports from Inst |
|---|
| 1279 | Ian Lynagh <igloo@earth.li>**20080510220452] |
|---|
| 1280 | [Fix a warning when DEBUG is not on |
|---|
| 1281 | Ian Lynagh <igloo@earth.li>**20080510220329] |
|---|
| 1282 | [Update compat for changes to Cabal |
|---|
| 1283 | Ian Lynagh <igloo@earth.li>**20080510211901] |
|---|
| 1284 | [Update ghc-pkg to follow Cabal changes |
|---|
| 1285 | Ian Lynagh <igloo@earth.li>**20080510211035] |
|---|
| 1286 | [Make TcGenDeriv warning-free |
|---|
| 1287 | Ian Lynagh <igloo@earth.li>**20080506210858] |
|---|
| 1288 | [Make TcMatches warning-free |
|---|
| 1289 | Ian Lynagh <igloo@earth.li>**20080506204254] |
|---|
| 1290 | [Make TcHsSyn warning-free |
|---|
| 1291 | Ian Lynagh <igloo@earth.li>**20080506201829] |
|---|
| 1292 | [Make TcRnMonad warning-free |
|---|
| 1293 | Ian Lynagh <igloo@earth.li>**20080506193359] |
|---|
| 1294 | [Make TcDefaults warning-free |
|---|
| 1295 | Ian Lynagh <igloo@earth.li>**20080506191728] |
|---|
| 1296 | [Make TcArrows warning-free |
|---|
| 1297 | Ian Lynagh <igloo@earth.li>**20080506191141] |
|---|
| 1298 | [TcSplice is now mostly warning-free |
|---|
| 1299 | Ian Lynagh <igloo@earth.li>**20080506180618 |
|---|
| 1300 | There are some unused things, but I am not sure if the intention is that |
|---|
| 1301 | they will be used in the future. Names implied they were related to |
|---|
| 1302 | splicing in patterns and types. |
|---|
| 1303 | ] |
|---|
| 1304 | [Make Inst warning-free |
|---|
| 1305 | Ian Lynagh <igloo@earth.li>**20080506173842] |
|---|
| 1306 | [Add a panic for lookupPred EqPred |
|---|
| 1307 | Ian Lynagh <igloo@earth.li>**20080506171749 |
|---|
| 1308 | It's possible that returning Nothing was the right thing to do here, |
|---|
| 1309 | but the comment and variable name indicated that it was written for |
|---|
| 1310 | implicit parameters, so make it a panic for now just in case. |
|---|
| 1311 | ] |
|---|
| 1312 | [Make FamInst warning-free |
|---|
| 1313 | Ian Lynagh <igloo@earth.li>**20080506171031] |
|---|
| 1314 | [Fix context for fwd_pure_anal to match that of forward_sol |
|---|
| 1315 | simonpj@microsoft.com**20080507072825] |
|---|
| 1316 | [FIX validate: Fix warnings in new literal code |
|---|
| 1317 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080507035417 |
|---|
| 1318 | |
|---|
| 1319 | Validate uses -Werror so the warnings broke it. |
|---|
| 1320 | ] |
|---|
| 1321 | [Vectorise even with -O0 |
|---|
| 1322 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080507020055] |
|---|
| 1323 | [Remove ilxGen; part of trac #2243 |
|---|
| 1324 | Ian Lynagh <igloo@earth.li>**20080506104456] |
|---|
| 1325 | [Remove javaGen; part of trac #2243 |
|---|
| 1326 | Ian Lynagh <igloo@earth.li>**20080506104307] |
|---|
| 1327 | [Add a comment about why DsMeta needs the warning kludge |
|---|
| 1328 | Ian Lynagh <igloo@earth.li>**20080506103506] |
|---|
| 1329 | [Fix Trac #2246; overhaul handling of overloaded literals |
|---|
| 1330 | simonpj@microsoft.com**20080506102551 |
|---|
| 1331 | |
|---|
| 1332 | The real work of fixing Trac #2246 is to use shortCutLit in |
|---|
| 1333 | MatchLit.dsOverLit, so that type information discovered late in the |
|---|
| 1334 | day by the type checker can still be exploited during desugaring. |
|---|
| 1335 | |
|---|
| 1336 | However, as usual I found myself doing some refactoring along the |
|---|
| 1337 | way, to tidy up the handling of overloaded literals. The main |
|---|
| 1338 | change is to split HsOverLit into a record, which in turn uses |
|---|
| 1339 | a sum type for the three variants. This makes the code significantly |
|---|
| 1340 | more modular. |
|---|
| 1341 | |
|---|
| 1342 | data HsOverLit id |
|---|
| 1343 | = OverLit { |
|---|
| 1344 | ol_val :: OverLitVal, |
|---|
| 1345 | ol_rebindable :: Bool, -- True <=> rebindable syntax |
|---|
| 1346 | -- False <=> standard syntax |
|---|
| 1347 | ol_witness :: SyntaxExpr id, -- Note [Overloaded literal witnesses] |
|---|
| 1348 | ol_type :: PostTcType } |
|---|
| 1349 | |
|---|
| 1350 | data OverLitVal |
|---|
| 1351 | = HsIntegral !Integer -- Integer-looking literals; |
|---|
| 1352 | | HsFractional !Rational -- Frac-looking literals |
|---|
| 1353 | | HsIsString !FastString -- String-looking literals |
|---|
| 1354 | |
|---|
| 1355 | ] |
|---|
| 1356 | [Fix type signature to work without -XRelaxedPolyRec, and hence earlier GHCs |
|---|
| 1357 | simonpj@microsoft.com**20080506095817] |
|---|
| 1358 | [Eliminate a warning for compiler/basicTypes/OccName.lhs |
|---|
| 1359 | Thorkil Naur <naur@post11.tele.dk>**20080504191511] |
|---|
| 1360 | [External Core tools: add note to README about where to find documentation |
|---|
| 1361 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080505004603] |
|---|
| 1362 | [Some External Core doc fixes |
|---|
| 1363 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080505003955] |
|---|
| 1364 | [External Core tools: track new syntax for newtypes |
|---|
| 1365 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080505001050 |
|---|
| 1366 | |
|---|
| 1367 | Update External Core tools to reflect new syntax for |
|---|
| 1368 | newtypes. (Notice that the typechecker is 90 lines shorter!) |
|---|
| 1369 | |
|---|
| 1370 | Also: improve dependency-finding, miscellaneous refactoring. |
|---|
| 1371 | ] |
|---|
| 1372 | [Improve External Core newtype syntax |
|---|
| 1373 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080504230233 |
|---|
| 1374 | |
|---|
| 1375 | I realized that recursive newtypes no longer have to be |
|---|
| 1376 | distinguished in the External Core AST, because explicit coercions |
|---|
| 1377 | allow the typechecker to typecheck newtypes without ever |
|---|
| 1378 | expanding newtypes. So, now all newtypes in External Core have |
|---|
| 1379 | a representation clause. O frabjous day! |
|---|
| 1380 | |
|---|
| 1381 | ] |
|---|
| 1382 | [Remove a duplicate module import in BuildTyCl |
|---|
| 1383 | Ian Lynagh <igloo@earth.li>**20080504222023] |
|---|
| 1384 | [Make SimplEnv warning-free |
|---|
| 1385 | Ian Lynagh <igloo@earth.li>**20080504213123] |
|---|
| 1386 | [Make SimplUtils warning-free |
|---|
| 1387 | Ian Lynagh <igloo@earth.li>**20080504212447] |
|---|
| 1388 | [Remove a hack for GHC 3.03 in SimplMonad |
|---|
| 1389 | Ian Lynagh <igloo@earth.li>**20080504205935] |
|---|
| 1390 | [Make SimplMonad warning-free |
|---|
| 1391 | Ian Lynagh <igloo@earth.li>**20080504205630] |
|---|
| 1392 | [Make LiberateCase warning-free |
|---|
| 1393 | Ian Lynagh <igloo@earth.li>**20080504204729] |
|---|
| 1394 | [Make FloatOut warning-free |
|---|
| 1395 | Ian Lynagh <igloo@earth.li>**20080504204058] |
|---|
| 1396 | [Make FloatIn warning-free |
|---|
| 1397 | Ian Lynagh <igloo@earth.li>**20080504202538] |
|---|
| 1398 | [Make SetLevels warning-free |
|---|
| 1399 | Ian Lynagh <igloo@earth.li>**20080504201710] |
|---|
| 1400 | [Make Vectorise warning-free |
|---|
| 1401 | Ian Lynagh <igloo@earth.li>**20080504195430] |
|---|
| 1402 | [Remove some dead code from VectType |
|---|
| 1403 | Ian Lynagh <igloo@earth.li>**20080504194432] |
|---|
| 1404 | [Make VectType warning-free |
|---|
| 1405 | Ian Lynagh <igloo@earth.li>**20080504194335] |
|---|
| 1406 | [Make IfaceEnv warning-free |
|---|
| 1407 | Ian Lynagh <igloo@earth.li>**20080504190944] |
|---|
| 1408 | [Make IfaceSyn warning-free |
|---|
| 1409 | Ian Lynagh <igloo@earth.li>**20080504190710] |
|---|
| 1410 | [Make IfaceType warning-free |
|---|
| 1411 | Ian Lynagh <igloo@earth.li>**20080504183529] |
|---|
| 1412 | [Make BuildTyCl warning-free |
|---|
| 1413 | Ian Lynagh <igloo@earth.li>**20080504182336] |
|---|
| 1414 | [Make BinIface warning-free |
|---|
| 1415 | Ian Lynagh <igloo@earth.li>**20080504182031] |
|---|
| 1416 | [Make LoadIface warning-free |
|---|
| 1417 | Ian Lynagh <igloo@earth.li>**20080504180847] |
|---|
| 1418 | [Make MkIface warning-free |
|---|
| 1419 | Ian Lynagh <igloo@earth.li>**20080504174952] |
|---|
| 1420 | [Make TcIface warning-free |
|---|
| 1421 | Ian Lynagh <igloo@earth.li>**20080504172906] |
|---|
| 1422 | [Make StgLint warning-free |
|---|
| 1423 | Ian Lynagh <igloo@earth.li>**20080504151343] |
|---|
| 1424 | [Make CoreToStg warning-free |
|---|
| 1425 | Ian Lynagh <igloo@earth.li>**20080504145432] |
|---|
| 1426 | [Make DsArrows warning-free |
|---|
| 1427 | Ian Lynagh <igloo@earth.li>**20080504140443] |
|---|
| 1428 | [Make DsCCall warning-free |
|---|
| 1429 | Ian Lynagh <igloo@earth.li>**20080504132635] |
|---|
| 1430 | [Make DsMeta almost warning-free |
|---|
| 1431 | Ian Lynagh <igloo@earth.li>**20080504125742 |
|---|
| 1432 | GHC claims that OccName is unused, but it is wrong. |
|---|
| 1433 | ] |
|---|
| 1434 | [Make MatchLit warning-free |
|---|
| 1435 | Ian Lynagh <igloo@earth.li>**20080504114848] |
|---|
| 1436 | [Add an Outputable EquationInfo instance |
|---|
| 1437 | Ian Lynagh <igloo@earth.li>**20080504114827] |
|---|
| 1438 | [Whitespace only (TcInstDcls) |
|---|
| 1439 | Ian Lynagh <igloo@earth.li>**20080504111101] |
|---|
| 1440 | [Fix the stage 1 build |
|---|
| 1441 | Ian Lynagh <igloo@earth.li>**20080504011733] |
|---|
| 1442 | [Remove unused function mapInScopeSet |
|---|
| 1443 | Ian Lynagh <igloo@earth.li>**20080503191450] |
|---|
| 1444 | [Make part of the parser a bit stricter |
|---|
| 1445 | Ian Lynagh <igloo@earth.li>**20080502225717] |
|---|
| 1446 | [Fix some space-wasting in the Parser |
|---|
| 1447 | Ian Lynagh <igloo@earth.li>**20080502225645 |
|---|
| 1448 | (fst x, snd x) => x |
|---|
| 1449 | ] |
|---|
| 1450 | [Make ByteCodeGen warning-free |
|---|
| 1451 | Ian Lynagh <igloo@earth.li>**20080504002527] |
|---|
| 1452 | [Tiny code tweak in the definition of io in GhciMonad; no semantic change |
|---|
| 1453 | Ian Lynagh <igloo@earth.li>**20080503235211] |
|---|
| 1454 | [Make GhciMonad warning-free |
|---|
| 1455 | Ian Lynagh <igloo@earth.li>**20080503235135] |
|---|
| 1456 | [Tiny code recatoring in GhciTags |
|---|
| 1457 | Ian Lynagh <igloo@earth.li>**20080503234539] |
|---|
| 1458 | [Make GhciTags warning-free |
|---|
| 1459 | Ian Lynagh <igloo@earth.li>**20080503234441] |
|---|
| 1460 | [Make ObjLink warning-free |
|---|
| 1461 | Ian Lynagh <igloo@earth.li>**20080503233418] |
|---|
| 1462 | [Remove a hack from a time when ghc couldn't do seq |
|---|
| 1463 | Ian Lynagh <igloo@earth.li>**20080503232832] |
|---|
| 1464 | [Make RnExpr warning-free |
|---|
| 1465 | Ian Lynagh <igloo@earth.li>**20080503232704] |
|---|
| 1466 | [Make RnEnv warning-free |
|---|
| 1467 | Ian Lynagh <igloo@earth.li>**20080503223430] |
|---|
| 1468 | [Fix warnings in RnNames |
|---|
| 1469 | Ian Lynagh <igloo@earth.li>**20080503221512] |
|---|
| 1470 | [Make RnBinds warning-free |
|---|
| 1471 | Ian Lynagh <igloo@earth.li>**20080503213149] |
|---|
| 1472 | [Change a mappM to mapM_ |
|---|
| 1473 | Ian Lynagh <igloo@earth.li>**20080503203354] |
|---|
| 1474 | [Make RnPat warning-free |
|---|
| 1475 | Ian Lynagh <igloo@earth.li>**20080503203300] |
|---|
| 1476 | [Make RnHsDoc warning-free |
|---|
| 1477 | Ian Lynagh <igloo@earth.li>**20080503201343] |
|---|
| 1478 | [Make RnSource warning-free |
|---|
| 1479 | Ian Lynagh <igloo@earth.li>**20080503200932] |
|---|
| 1480 | [Make RnHsSyn warning-free |
|---|
| 1481 | Ian Lynagh <igloo@earth.li>**20080503170649] |
|---|
| 1482 | [Whitespace only |
|---|
| 1483 | Ian Lynagh <igloo@earth.li>**20080503170053] |
|---|
| 1484 | [Vectorise polymorphic let bindings |
|---|
| 1485 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080504054006] |
|---|
| 1486 | [Improve syntax for primitive coercions in External Core |
|---|
| 1487 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080504024304 |
|---|
| 1488 | |
|---|
| 1489 | Add new syntax in External Core for primitive coercions (trans, |
|---|
| 1490 | sym, etc.) rather than wiring their names into the ext-core |
|---|
| 1491 | parser. |
|---|
| 1492 | ] |
|---|
| 1493 | [Fix External Core interpreter |
|---|
| 1494 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080503231044 |
|---|
| 1495 | |
|---|
| 1496 | The External Core interpreter works (in a limited sense). |
|---|
| 1497 | For details, see the README. |
|---|
| 1498 | |
|---|
| 1499 | This means we now have a marginally functioning set of |
|---|
| 1500 | External Core tools. |
|---|
| 1501 | |
|---|
| 1502 | The other exciting change is that the test driver (Driver.hs) |
|---|
| 1503 | now computes module dependencies automatically instead of |
|---|
| 1504 | having a wired-in list of library modules. |
|---|
| 1505 | ] |
|---|
| 1506 | [replace hints with kinds in parser as well |
|---|
| 1507 | Norman Ramsey <nr@eecs.harvard.edu>**20080503224720] |
|---|
| 1508 | [replace Cmm 'hint' with 'kind' |
|---|
| 1509 | Norman Ramsey <nr@eecs.harvard.edu>**20080503224514 |
|---|
| 1510 | C-- no longer has 'hints'; to guide parameter passing, it |
|---|
| 1511 | has 'kinds'. Renamed type constructor, data constructor, and record |
|---|
| 1512 | fields accordingly |
|---|
| 1513 | ] |
|---|
| 1514 | [new version of ZipDataflow |
|---|
| 1515 | Norman Ramsey <nr@eecs.harvard.edu>**20080503224208 |
|---|
| 1516 | This version combines forward/backard into a type class |
|---|
| 1517 | (actually two classes) of analysis and transformation. |
|---|
| 1518 | These type classes will always be expanded away at the client, |
|---|
| 1519 | so SLPJ may wonder why they exist: it is because the interface |
|---|
| 1520 | to this module is already very broad, and by overloading the functions |
|---|
| 1521 | for forward and backward problems, we cut the cognitive load on the |
|---|
| 1522 | clients in half. |
|---|
| 1523 | ] |
|---|
| 1524 | [minor changes to Cmm left over from September 2007 |
|---|
| 1525 | Norman Ramsey <nr@eecs.harvard.edu>**20080503223452 |
|---|
| 1526 | Nothing too deep here; primarily tinking with prettyprinting |
|---|
| 1527 | and names. Also eliminated some warnings. This patch covers |
|---|
| 1528 | most (but not all) of the code NR changed at the very end |
|---|
| 1529 | of September 2007, just before ICFP hit... |
|---|
| 1530 | ] |
|---|
| 1531 | [Make darcs-all act on all repos in libraries/, not just boot/extra libs |
|---|
| 1532 | Ian Lynagh <igloo@earth.li>**20080502174753] |
|---|
| 1533 | [When validating, configure with "--prefix=`pwd`/inst" |
|---|
| 1534 | Ian Lynagh <igloo@earth.li>**20080502155649 |
|---|
| 1535 | This means a validate build can be installed locally. |
|---|
| 1536 | `pwd`/inst probably won't give a useful value on all platforms (in |
|---|
| 1537 | particular there are probably some Windows configurations it doesn't |
|---|
| 1538 | work for), but I don't think it will ever make the build fail. |
|---|
| 1539 | ] |
|---|
| 1540 | [Improve the unboxed types documentation |
|---|
| 1541 | Ian Lynagh <igloo@earth.li>**20080430152508 |
|---|
| 1542 | Mainly adding descriptions of unboxed literals, |
|---|
| 1543 | ] |
|---|
| 1544 | [sumP on doubles and int |
|---|
| 1545 | keller@cse.unsw.edu.au**20080502031905] |
|---|
| 1546 | [Fixed vect decl for sumP, enumfromToP |
|---|
| 1547 | keller@cse.unsw.edu.au**20080501011824] |
|---|
| 1548 | [Missing .0 on float constant. |
|---|
| 1549 | Don Stewart <dons@galois.com>**20080501000517] |
|---|
| 1550 | [Replace C99 exp2f(32) call in __2Int_encodeDouble |
|---|
| 1551 | Don Stewart <dons@galois.com>**20080430214827 |
|---|
| 1552 | with constant 4294967296. |
|---|
| 1553 | |
|---|
| 1554 | exp2f is a C99-ism not availabl everywhere. Replace it |
|---|
| 1555 | with its result. Helps building on OpenBSD> |
|---|
| 1556 | |
|---|
| 1557 | ] |
|---|
| 1558 | [Use panic rather than error in RegLiveness |
|---|
| 1559 | Ian Lynagh <igloo@earth.li>**20080430131349] |
|---|
| 1560 | [Update an error message |
|---|
| 1561 | Ian Lynagh <igloo@earth.li>**20080430131317 |
|---|
| 1562 | error "RegisterAlloc.livenessSCCs" -> error "RegLiveness.livenessSCCs" |
|---|
| 1563 | ] |
|---|
| 1564 | [Update a panic message |
|---|
| 1565 | Ian Lynagh <igloo@earth.li>**20080430131021 |
|---|
| 1566 | It was (panic "RegisterAlloc.joinToTargets"), but had since moved to |
|---|
| 1567 | RegAllocLinear.makeRegMovementGraph. |
|---|
| 1568 | ] |
|---|
| 1569 | [Remove BitSet, FieldLabel, RegisterAlloc from compiler/package.conf.in |
|---|
| 1570 | Ian Lynagh <igloo@earth.li>**20080430130251 |
|---|
| 1571 | The modules no longer exist. Spotted by Marc Weber. |
|---|
| 1572 | ] |
|---|
| 1573 | [Improve documentation of RULES pragmas |
|---|
| 1574 | simonpj@microsoft.com**20080430082431] |
|---|
| 1575 | [change topHandlerFastExit to topHandler, so the terminal state gets restored (#2228) |
|---|
| 1576 | Simon Marlow <simonmar@microsoft.com>**20080429222442] |
|---|
| 1577 | [don't turn off stdin/stdout buffering after loading a module with ghc -e (#2228) |
|---|
| 1578 | Simon Marlow <simonmar@microsoft.com>**20080429222409] |
|---|
| 1579 | [FIX #1933: use a better test for timer_create() |
|---|
| 1580 | Simon Marlow <simonmar@microsoft.com>**20080429212945] |
|---|
| 1581 | [Fix Trac #1969: perfomance bug in the specialiser |
|---|
| 1582 | simonpj@microsoft.com**20080428155711 |
|---|
| 1583 | |
|---|
| 1584 | The specialiser was using a rather brain-dead representation for |
|---|
| 1585 | UsageDetails, with much converting from lists to finite maps and |
|---|
| 1586 | back. This patch does some significant refactoring. It doesn't |
|---|
| 1587 | change the representation altogether, but it does eliminate the |
|---|
| 1588 | to-and-fro nonsense. |
|---|
| 1589 | |
|---|
| 1590 | It validates OK, but it's always possible that I have inadvertently |
|---|
| 1591 | lost specialisation somewhere, so keep an eye out for any run-time |
|---|
| 1592 | performance regressions. |
|---|
| 1593 | |
|---|
| 1594 | Oh, and Specialise is now warning-free too. |
|---|
| 1595 | |
|---|
| 1596 | ] |
|---|
| 1597 | [Fix Trac #2238: do not use newtype for a class with equality predicates |
|---|
| 1598 | simonpj@microsoft.com**20080428134730 |
|---|
| 1599 | |
|---|
| 1600 | See Note [Class newtypes and equality predicates] in this module. |
|---|
| 1601 | |
|---|
| 1602 | ] |
|---|
| 1603 | [Add :list to ghci's :? help; fixes trac #2217 |
|---|
| 1604 | Ian Lynagh <igloo@earth.li>**20080427190049] |
|---|
| 1605 | [Fix an error if an SCC name contains a space; fixes trac #2071 |
|---|
| 1606 | Ian Lynagh <igloo@earth.li>**20080427114808] |
|---|
| 1607 | [Fix build on PPC: Add some missing parentheses |
|---|
| 1608 | Ian Lynagh <igloo@earth.li>**20080427103545] |
|---|
| 1609 | [Refactor some code a bit, and improve an error |
|---|
| 1610 | Ian Lynagh <igloo@earth.li>**20080426011634 |
|---|
| 1611 | The "magic number mismatch: old/corrupt interface file?" error now tells |
|---|
| 1612 | us what we got, and what we expected. |
|---|
| 1613 | ] |
|---|
| 1614 | [Whitespace changes only |
|---|
| 1615 | Ian Lynagh <igloo@earth.li>**20080426010908] |
|---|
| 1616 | [Fix the ticky ticky build |
|---|
| 1617 | Ian Lynagh <igloo@earth.li>**20080425140434 |
|---|
| 1618 | Include TickyCounters.h in Stg.h if we are doing Ticky Ticky. |
|---|
| 1619 | ] |
|---|
| 1620 | [Fix a couple of format strings in Ticky.c |
|---|
| 1621 | Ian Lynagh <igloo@earth.li>**20080425134725] |
|---|
| 1622 | [Comment out some unused code in Ticky.c |
|---|
| 1623 | Ian Lynagh <igloo@earth.li>**20080425134307] |
|---|
| 1624 | [Spelling fixes in glasgow_exts.xml |
|---|
| 1625 | Samuel Bronson <naesten@gmail.com>**20080415232626 |
|---|
| 1626 | Also adds a <para></para> element and replaces an occurance of SGML |
|---|
| 1627 | with XML... |
|---|
| 1628 | ] |
|---|
| 1629 | [Vectorisation of: enumFromTo, div, intSqrt |
|---|
| 1630 | keller@cse.unsw.edu.au**20080425072421] |
|---|
| 1631 | [Fix int64ToInteger 0xFFFFFFFF00000000 on 32bit machine; trac #2223 |
|---|
| 1632 | Ian Lynagh <igloo@earth.li>**20080424131526 |
|---|
| 1633 | Patch from Mike Gunter. |
|---|
| 1634 | ] |
|---|
| 1635 | [Add 123## literals for Word# |
|---|
| 1636 | Ian Lynagh <igloo@earth.li>**20080423161115] |
|---|
| 1637 | [Whitespace changes only |
|---|
| 1638 | Ian Lynagh <igloo@earth.li>**20080423143553] |
|---|
| 1639 | [Added support for vectorising emptyP, squareRoot, combineP |
|---|
| 1640 | keller@cse.unsw.edu.au**20080424020025] |
|---|
| 1641 | [Add back an erroneously removed #include "HsVersions.h" |
|---|
| 1642 | Ian Lynagh <igloo@earth.li>**20080423110930] |
|---|
| 1643 | [Include HsVersions.h where necessary |
|---|
| 1644 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080423042820] |
|---|
| 1645 | [Make a panic slightly more helpful |
|---|
| 1646 | Ian Lynagh <igloo@earth.li>**20080422164916] |
|---|
| 1647 | [Fix build |
|---|
| 1648 | Ian Lynagh <igloo@earth.li>**20080422133838] |
|---|
| 1649 | [Fix build |
|---|
| 1650 | Ian Lynagh <igloo@earth.li>**20080422124919] |
|---|
| 1651 | [(F)SLIT -> (f)sLit in SimplUtils |
|---|
| 1652 | Ian Lynagh <igloo@earth.li>**20080422124908] |
|---|
| 1653 | [(F)SLIT -> (f)sLit in HsBinds |
|---|
| 1654 | Ian Lynagh <igloo@earth.li>**20080422122319] |
|---|
| 1655 | [(F)SLIT -> (f)sLit in StaticFlags |
|---|
| 1656 | Ian Lynagh <igloo@earth.li>**20080422122226] |
|---|
| 1657 | [Build fixes |
|---|
| 1658 | Ian Lynagh <igloo@earth.li>**20080422115500] |
|---|
| 1659 | [Change the last few (F)SLIT's into (f)sLit's |
|---|
| 1660 | Ian Lynagh <igloo@earth.li>**20080422114713] |
|---|
| 1661 | [FSLIT -> fsLit in PrelNames |
|---|
| 1662 | Ian Lynagh <igloo@earth.li>**20080422113907] |
|---|
| 1663 | [Fix warnings in PrelNames |
|---|
| 1664 | Ian Lynagh <igloo@earth.li>**20080422113817] |
|---|
| 1665 | [(F)SLIT -> (f)sLit in CmmParse |
|---|
| 1666 | Ian Lynagh <igloo@earth.li>**20080422110857] |
|---|
| 1667 | [PrelRules is now warning free |
|---|
| 1668 | Ian Lynagh <igloo@earth.li>**20080413124325] |
|---|
| 1669 | [Remove a warning |
|---|
| 1670 | Ian Lynagh <igloo@earth.li>**20080413103120] |
|---|
| 1671 | [PrelInfo is now warning-free |
|---|
| 1672 | Ian Lynagh <igloo@earth.li>**20080413102906] |
|---|
| 1673 | [TysPrim is now warning-free |
|---|
| 1674 | Ian Lynagh <igloo@earth.li>**20080413101757] |
|---|
| 1675 | [TysWiredIn is now warning-free |
|---|
| 1676 | Ian Lynagh <igloo@earth.li>**20080413094012] |
|---|
| 1677 | [(F)SLIT -> (f)sLit in TcSplice |
|---|
| 1678 | Ian Lynagh <igloo@earth.li>**20080412180126] |
|---|
| 1679 | [(F)SLIT -> (f)sLit in Convert |
|---|
| 1680 | Ian Lynagh <igloo@earth.li>**20080412180037] |
|---|
| 1681 | [(F)SLIT -> (f)sLit in InteractiveUI |
|---|
| 1682 | Ian Lynagh <igloo@earth.li>**20080412180018] |
|---|
| 1683 | [(F)SLIT -> (f)sLit in InteractiveEval |
|---|
| 1684 | Ian Lynagh <igloo@earth.li>**20080412175850] |
|---|
| 1685 | [(F)SLIT -> (f)sLit in RtClosureInspect |
|---|
| 1686 | Ian Lynagh <igloo@earth.li>**20080412175734] |
|---|
| 1687 | [(F)SLIT -> (f)sLit in Linker |
|---|
| 1688 | Ian Lynagh <igloo@earth.li>**20080412175700] |
|---|
| 1689 | [(F)SLIT -> (f)sLit in ByteCodeGen |
|---|
| 1690 | Ian Lynagh <igloo@earth.li>**20080412175456] |
|---|
| 1691 | [(F)SLIT -> (f)sLit in DsMeta |
|---|
| 1692 | Ian Lynagh <igloo@earth.li>**20080412175407] |
|---|
| 1693 | [(F)SLIT -> (f)sLit in PprTyThing |
|---|
| 1694 | Ian Lynagh <igloo@earth.li>**20080412163811] |
|---|
| 1695 | [(F)SLIT -> (f)sLit in DriverMkDepend |
|---|
| 1696 | Ian Lynagh <igloo@earth.li>**20080412163724] |
|---|
| 1697 | [(F)SLIT -> (f)sLit in GHC |
|---|
| 1698 | Ian Lynagh <igloo@earth.li>**20080412163604] |
|---|
| 1699 | [(F)SLIT -> (f)sLit in DriverPipeline |
|---|
| 1700 | Ian Lynagh <igloo@earth.li>**20080412163406] |
|---|
| 1701 | [(F)SLIT -> (f)sLit in HscMain |
|---|
| 1702 | Ian Lynagh <igloo@earth.li>**20080412163320] |
|---|
| 1703 | [(F)SLIT -> (f)sLit in TcRnDriver |
|---|
| 1704 | Ian Lynagh <igloo@earth.li>**20080412162930] |
|---|
| 1705 | [(F)SLIT -> (f)sLit in TcDefaults |
|---|
| 1706 | Ian Lynagh <igloo@earth.li>**20080412162824] |
|---|
| 1707 | [(F)SLIT -> (f)sLit in TcRules |
|---|
| 1708 | Ian Lynagh <igloo@earth.li>**20080412162705] |
|---|
| 1709 | [(F)SLIT -> (f)sLit in TcForeign |
|---|
| 1710 | Ian Lynagh <igloo@earth.li>**20080412162632] |
|---|
| 1711 | [(F)SLIT -> (f)sLit in TcExpr |
|---|
| 1712 | Ian Lynagh <igloo@earth.li>**20080412162533] |
|---|
| 1713 | [(F)SLIT -> (f)sLit in TcArrows |
|---|
| 1714 | Ian Lynagh <igloo@earth.li>**20080412162403] |
|---|
| 1715 | [(F)SLIT -> (f)sLit in TcMatches |
|---|
| 1716 | Ian Lynagh <igloo@earth.li>**20080412162314] |
|---|
| 1717 | [(F)SLIT -> (f)sLit in TcInstDcls |
|---|
| 1718 | Ian Lynagh <igloo@earth.li>**20080412162152] |
|---|
| 1719 | [(F)SLIT -> (f)sLit in FamInst |
|---|
| 1720 | Ian Lynagh <igloo@earth.li>**20080412162033] |
|---|
| 1721 | [(F)SLIT -> (f)sLit in TcDeriv |
|---|
| 1722 | Ian Lynagh <igloo@earth.li>**20080412161958] |
|---|
| 1723 | [(F)SLIT -> (f)sLit in TcGenDeriv |
|---|
| 1724 | Ian Lynagh <igloo@earth.li>**20080412161827] |
|---|
| 1725 | [(F)SLIT -> (f)sLit in TcTyClsDecls |
|---|
| 1726 | Ian Lynagh <igloo@earth.li>**20080412161708] |
|---|
| 1727 | [(F)SLIT -> (f)sLit in TcClassDcl |
|---|
| 1728 | Ian Lynagh <igloo@earth.li>**20080412161517] |
|---|
| 1729 | [(F)SLIT -> (f)sLit in RnExpr |
|---|
| 1730 | Ian Lynagh <igloo@earth.li>**20080412161410] |
|---|
| 1731 | [(F)SLIT -> (f)sLit in TcBinds |
|---|
| 1732 | Ian Lynagh <igloo@earth.li>**20080412161320] |
|---|
| 1733 | [(F)SLIT -> (f)sLit in TcHsType |
|---|
| 1734 | Ian Lynagh <igloo@earth.li>**20080412161045] |
|---|
| 1735 | [(F)SLIT -> (f)sLit in Generics |
|---|
| 1736 | Ian Lynagh <igloo@earth.li>**20080412160944] |
|---|
| 1737 | [(F)SLIT -> (f)sLit in TcSimplify |
|---|
| 1738 | Ian Lynagh <igloo@earth.li>**20080412160715] |
|---|
| 1739 | [(F)SLIT -> (f)sLit in TcTyFuns |
|---|
| 1740 | Ian Lynagh <igloo@earth.li>**20080412160559] |
|---|
| 1741 | [(F)SLIT -> (f)sLit in Inst |
|---|
| 1742 | Ian Lynagh <igloo@earth.li>**20080412160453] |
|---|
| 1743 | [(F)SLIT -> (f)sLit in RnSource |
|---|
| 1744 | Ian Lynagh <igloo@earth.li>**20080412160348] |
|---|
| 1745 | [(F)SLIT -> (f)sLit in RnBinds |
|---|
| 1746 | Ian Lynagh <igloo@earth.li>**20080412160232] |
|---|
| 1747 | [(F)SLIT -> (f)sLit in RnPat |
|---|
| 1748 | Ian Lynagh <igloo@earth.li>**20080412160138] |
|---|
| 1749 | [(F)SLIT -> (f)sLit in RnTypes |
|---|
| 1750 | Ian Lynagh <igloo@earth.li>**20080412160039] |
|---|
| 1751 | [(F)SLIT -> (f)sLit in RnNames |
|---|
| 1752 | Ian Lynagh <igloo@earth.li>**20080412155923] |
|---|
| 1753 | [(F)SLIT -> (f)sLit in RnEnv |
|---|
| 1754 | Ian Lynagh <igloo@earth.li>**20080412155810] |
|---|
| 1755 | [(F)SLIT -> (f)sLit in TcEnv |
|---|
| 1756 | Ian Lynagh <igloo@earth.li>**20080412155639] |
|---|
| 1757 | [(F)SLIT -> (f)sLit in CSE |
|---|
| 1758 | Ian Lynagh <igloo@earth.li>**20080412155551] |
|---|
| 1759 | [(F)SLIT -> (f)sLit in Simplify |
|---|
| 1760 | Ian Lynagh <igloo@earth.li>**20080412155517] |
|---|
| 1761 | [(F)SLIT -> (f)sLit in SimplEnv |
|---|
| 1762 | Ian Lynagh <igloo@earth.li>**20080412155311] |
|---|
| 1763 | [(F)SLIT -> (f)sLit in FloatOut |
|---|
| 1764 | Ian Lynagh <igloo@earth.li>**20080412155114] |
|---|
| 1765 | [(F)SLIT -> (f)sLit in Specialse |
|---|
| 1766 | Ian Lynagh <igloo@earth.li>**20080412155034] |
|---|
| 1767 | [(F)SLIT -> (f)sLit in SpecConstr |
|---|
| 1768 | Ian Lynagh <igloo@earth.li>**20080412154959] |
|---|
| 1769 | [(F)SLIT -> (f)sLit in Vectorise |
|---|
| 1770 | Ian Lynagh <igloo@earth.li>**20080412154718] |
|---|
| 1771 | [(F)SLIT -> (f)sLit in VectType |
|---|
| 1772 | Ian Lynagh <igloo@earth.li>**20080412154322] |
|---|
| 1773 | [(F)SLIT -> (f)sLit in VectUtils |
|---|
| 1774 | Ian Lynagh <igloo@earth.li>**20080412154229] |
|---|
| 1775 | [(F)SLIT -> (f)sLit in VectMonad |
|---|
| 1776 | Ian Lynagh <igloo@earth.li>**20080412154116] |
|---|
| 1777 | [(F)SLIT -> (f)sLit in VectBuiltIn |
|---|
| 1778 | Ian Lynagh <igloo@earth.li>**20080412154002] |
|---|
| 1779 | [(F)SLIT -> (f)sLit in SimplMonad |
|---|
| 1780 | Ian Lynagh <igloo@earth.li>**20080412153630] |
|---|
| 1781 | [(F)SLIT -> (f)sLit in CoreToStg |
|---|
| 1782 | Ian Lynagh <igloo@earth.li>**20080412153543] |
|---|
| 1783 | [(F)SLIT -> (f)sLit in StgLint |
|---|
| 1784 | Ian Lynagh <igloo@earth.li>**20080412153440] |
|---|
| 1785 | [(F)SLIT -> (f)sLit in Parser |
|---|
| 1786 | Ian Lynagh <igloo@earth.li>**20080412153329] |
|---|
| 1787 | [(F)SLIT -> (f)sLit in RdrHsSyn |
|---|
| 1788 | Ian Lynagh <igloo@earth.li>**20080412153052] |
|---|
| 1789 | [(F)SLIT -> (f)sLit in SysTools |
|---|
| 1790 | Ian Lynagh <igloo@earth.li>**20080412152909] |
|---|
| 1791 | [(F)SLIT -> (f)sLit in MachCodeGen |
|---|
| 1792 | Ian Lynagh <igloo@earth.li>**20080412152750] |
|---|
| 1793 | [(F)SLIT -> (f)sLit in PositionIndependentCode |
|---|
| 1794 | Ian Lynagh <igloo@earth.li>**20080412152545] |
|---|
| 1795 | [(F)SLIT -> (f)sLit in RegallocLinear |
|---|
| 1796 | Ian Lynagh <igloo@earth.li>**20080412152355] |
|---|
| 1797 | [(F)SLIT -> (f)sLit in RegLiveness |
|---|
| 1798 | Ian Lynagh <igloo@earth.li>**20080412152307] |
|---|
| 1799 | [(F)SLIT -> (f)sLit in PprMach |
|---|
| 1800 | Ian Lynagh <igloo@earth.li>**20080412152217] |
|---|
| 1801 | [(F)SLIT -> (f)sLit in Desugar |
|---|
| 1802 | Ian Lynagh <igloo@earth.li>**20080412151250] |
|---|
| 1803 | [(F)SLIT -> (f)sLit in MkIface |
|---|
| 1804 | Ian Lynagh <igloo@earth.li>**20080412151147] |
|---|
| 1805 | [(F)SLIT -> (f)sLit in DsForeign |
|---|
| 1806 | Ian Lynagh <igloo@earth.li>**20080412150848] |
|---|
| 1807 | [(F)SLIT -> (f)sLit in Match |
|---|
| 1808 | Ian Lynagh <igloo@earth.li>**20080412150644] |
|---|
| 1809 | [(F)SLIT -> (f)sLit in DsBinds |
|---|
| 1810 | Ian Lynagh <igloo@earth.li>**20080412150510] |
|---|
| 1811 | [(F)SLIT -> (f)sLit in Coverage |
|---|
| 1812 | Ian Lynagh <igloo@earth.li>**20080412150416] |
|---|
| 1813 | [(F)SLIT -> (f)sLit in DsUtils |
|---|
| 1814 | Ian Lynagh <igloo@earth.li>**20080412150317] |
|---|
| 1815 | [(F)SLIT -> (f)sLit in DsUtils |
|---|
| 1816 | Ian Lynagh <igloo@earth.li>**20080412150231] |
|---|
| 1817 | [(F)SLIT -> (f)sLit in TcHsSyn |
|---|
| 1818 | Ian Lynagh <igloo@earth.li>**20080412145639] |
|---|
| 1819 | [(F)SLIT -> (f)sLit in FunDeps |
|---|
| 1820 | Ian Lynagh <igloo@earth.li>**20080412145238] |
|---|
| 1821 | [(F)SLIT -> (f)sLit in DsMonad |
|---|
| 1822 | Ian Lynagh <igloo@earth.li>**20080412145201] |
|---|
| 1823 | [(F)SLIT -> (f)sLit in TcIface |
|---|
| 1824 | Ian Lynagh <igloo@earth.li>**20080412145105] |
|---|
| 1825 | [(F)SLIT -> (f)sLit in LoadIface |
|---|
| 1826 | Ian Lynagh <igloo@earth.li>**20080412145018] |
|---|
| 1827 | [(F)SLIT -> (f)sLit in Finder |
|---|
| 1828 | Ian Lynagh <igloo@earth.li>**20080412144812] |
|---|
| 1829 | [(F)SLIT -> (f)sLit in TcRnMonad |
|---|
| 1830 | Ian Lynagh <igloo@earth.li>**20080412144557] |
|---|
| 1831 | [(F)SLIT -> (f)sLit in TcRnTypes |
|---|
| 1832 | Ian Lynagh <igloo@earth.li>**20080412144504] |
|---|
| 1833 | [(F)SLIT -> (f)sLit in WwLib |
|---|
| 1834 | Ian Lynagh <igloo@earth.li>**20080412144123] |
|---|
| 1835 | [(F)SLIT -> (f)sLit in CoreSubst |
|---|
| 1836 | Ian Lynagh <igloo@earth.li>**20080412143851] |
|---|
| 1837 | [(F)SLIT -> (f)sLit in CorePrep |
|---|
| 1838 | Ian Lynagh <igloo@earth.li>**20080412143637] |
|---|
| 1839 | [(F)SLIT -> (f)sLit in CgCon |
|---|
| 1840 | Ian Lynagh <igloo@earth.li>**20080412143540] |
|---|
| 1841 | [(F)SLIT -> (f)sLit in HscTypes |
|---|
| 1842 | Ian Lynagh <igloo@earth.li>**20080412143353] |
|---|
| 1843 | [(F)SLIT -> (f)sLit in FamInstEnv |
|---|
| 1844 | Ian Lynagh <igloo@earth.li>**20080412141122] |
|---|
| 1845 | [(F)SLIT -> (f)sLit in InstEnv |
|---|
| 1846 | Ian Lynagh <igloo@earth.li>**20080412141045] |
|---|
| 1847 | [(F)SLIT -> (f)sLit in CgPrimOp |
|---|
| 1848 | Ian Lynagh <igloo@earth.li>**20080412140741] |
|---|
| 1849 | [(F)SLIT -> (f)sLit in PprC |
|---|
| 1850 | Ian Lynagh <igloo@earth.li>**20080412140630] |
|---|
| 1851 | [(F)SLIT -> (f)sLit in CgForeignCall |
|---|
| 1852 | Ian Lynagh <igloo@earth.li>**20080412140213] |
|---|
| 1853 | [(F)SLIT -> (f)sLit in CgClosure |
|---|
| 1854 | Ian Lynagh <igloo@earth.li>**20080412140136] |
|---|
| 1855 | [(F)SLIT -> (f)sLit in PprCmmZ |
|---|
| 1856 | Ian Lynagh <igloo@earth.li>**20080412135934] |
|---|
| 1857 | [(F)SLIT -> (f)sLit in ZipCfgCmmRep |
|---|
| 1858 | Ian Lynagh <igloo@earth.li>**20080412135902] |
|---|
| 1859 | [(F)SLIT -> (f)sLit in CmmLint |
|---|
| 1860 | Ian Lynagh <igloo@earth.li>**20080412135820] |
|---|
| 1861 | [(F)SLIT -> (f)sLit in CmmCPSGen |
|---|
| 1862 | Ian Lynagh <igloo@earth.li>**20080412135728] |
|---|
| 1863 | [(F)SLIT -> (f)sLit in CgBindery |
|---|
| 1864 | Ian Lynagh <igloo@earth.li>**20080412135620] |
|---|
| 1865 | [(F)SLIT -> (f)sLit in CgHeapery |
|---|
| 1866 | Ian Lynagh <igloo@earth.li>**20080412135529] |
|---|
| 1867 | [(F)SLIT -> (f)sLit in CgTicky |
|---|
| 1868 | Ian Lynagh <igloo@earth.li>**20080412135411] |
|---|
| 1869 | [(F)SLIT -> (f)sLit in CgCallConv |
|---|
| 1870 | Ian Lynagh <igloo@earth.li>**20080412135037] |
|---|
| 1871 | [(F)SLIT -> (f)sLit in CgProf |
|---|
| 1872 | Ian Lynagh <igloo@earth.li>**20080412133935] |
|---|
| 1873 | [(F)SLIT -> (f)sLit in PprCmm |
|---|
| 1874 | Ian Lynagh <igloo@earth.li>**20080412133323] |
|---|
| 1875 | [(F)SLIT -> (f)sLit in ClosureInfo |
|---|
| 1876 | Ian Lynagh <igloo@earth.li>**20080412133030] |
|---|
| 1877 | [(F)SLIT -> (f)sLit in StSyn |
|---|
| 1878 | Ian Lynagh <igloo@earth.li>**20080412132924] |
|---|
| 1879 | [(F)SLIT -> (f)sLit in SMRep |
|---|
| 1880 | Ian Lynagh <igloo@earth.li>**20080412132534] |
|---|
| 1881 | [(F)SLIT -> (f)sLit in MachOp |
|---|
| 1882 | Ian Lynagh <igloo@earth.li>**20080412132430] |
|---|
| 1883 | [(F)SLIT -> (f)sLit in CLabel |
|---|
| 1884 | Ian Lynagh <igloo@earth.li>**20080412132305] |
|---|
| 1885 | [(F)SLIT -> (f)sLit in Packages |
|---|
| 1886 | Ian Lynagh <igloo@earth.li>**20080412132158] |
|---|
| 1887 | [(F)SLIT -> (f)sLit in Lexer |
|---|
| 1888 | Ian Lynagh <igloo@earth.li>**20080412132044] |
|---|
| 1889 | [(F)SLIT -> (f)sLit in MkId |
|---|
| 1890 | Ian Lynagh <igloo@earth.li>**20080412131831] |
|---|
| 1891 | [(F)SLIT -> (f)sLit in Rules |
|---|
| 1892 | Ian Lynagh <igloo@earth.li>**20080412131707] |
|---|
| 1893 | [(F)SLIT -> (f)sLit in PrelRules |
|---|
| 1894 | Ian Lynagh <igloo@earth.li>**20080412131612] |
|---|
| 1895 | [(F)SLIT -> (f)sLit in HsSyn |
|---|
| 1896 | Ian Lynagh <igloo@earth.li>**20080412130737] |
|---|
| 1897 | [(F)SLIT -> (f)sLit in HsUtils |
|---|
| 1898 | Ian Lynagh <igloo@earth.li>**20080412125320] |
|---|
| 1899 | [(F)SLIT -> (f)sLit in HsExpr |
|---|
| 1900 | Ian Lynagh <igloo@earth.li>**20080412125229] |
|---|
| 1901 | [(F)SLIT -> (f)sLit in HsDecls |
|---|
| 1902 | Ian Lynagh <igloo@earth.li>**20080412124928] |
|---|
| 1903 | [(F)SLIT -> (f)sLit in HsImpExp |
|---|
| 1904 | Ian Lynagh <igloo@earth.li>**20080412124840] |
|---|
| 1905 | [(F)SLIT -> (f)sLit in HsPat |
|---|
| 1906 | Ian Lynagh <igloo@earth.li>**20080412124758] |
|---|
| 1907 | [(F)SLIT -> (f)sLit in HsTypes |
|---|
| 1908 | Ian Lynagh <igloo@earth.li>**20080412124645] |
|---|
| 1909 | [(F)SLIT -> (f)sLit in IfaceSyn |
|---|
| 1910 | Ian Lynagh <igloo@earth.li>**20080412124607] |
|---|
| 1911 | [(F)SLIT -> (f)sLit in IfaceType |
|---|
| 1912 | Ian Lynagh <igloo@earth.li>**20080412124507] |
|---|
| 1913 | [(F)SLIT -> (f)sLit in CoreUnfold |
|---|
| 1914 | Ian Lynagh <igloo@earth.li>**20080412124420] |
|---|
| 1915 | [(F)SLIT -> (f)sLit in CoreLint |
|---|
| 1916 | Ian Lynagh <igloo@earth.li>**20080412124339] |
|---|
| 1917 | [(F)SLIT -> (f)sLit in CoreUtils |
|---|
| 1918 | Ian Lynagh <igloo@earth.li>**20080412124218] |
|---|
| 1919 | [(F)SLIT -> (f)sLit in PprCore |
|---|
| 1920 | Ian Lynagh <igloo@earth.li>**20080412124141] |
|---|
| 1921 | [(F)SLIT -> (f)sLit in Id |
|---|
| 1922 | Ian Lynagh <igloo@earth.li>**20080412123952] |
|---|
| 1923 | [(F)SLIT -> (f)sLit in TcType |
|---|
| 1924 | Ian Lynagh <igloo@earth.li>**20080412123745] |
|---|
| 1925 | [(F)SLIT -> (f)sLit in IdInfo |
|---|
| 1926 | Ian Lynagh <igloo@earth.li>**20080412123637] |
|---|
| 1927 | [(F)SLIT -> (f)sLit in CoreSyn |
|---|
| 1928 | Ian Lynagh <igloo@earth.li>**20080412123507] |
|---|
| 1929 | [(F)SLIT -> (f)sLit in CostCentre |
|---|
| 1930 | Ian Lynagh <igloo@earth.li>**20080412123402] |
|---|
| 1931 | [(F)SLIT -> (f)sLit in Literal |
|---|
| 1932 | Ian Lynagh <igloo@earth.li>**20080412123322] |
|---|
| 1933 | [Generate fsLit not FSLIT in genprimopcode |
|---|
| 1934 | Ian Lynagh <igloo@earth.li>**20080412123247] |
|---|
| 1935 | [(F)SLIT -> (f)sLit in TysWiredIn |
|---|
| 1936 | Ian Lynagh <igloo@earth.li>**20080412122946] |
|---|
| 1937 | [(F)SLIT -> (f)sLit in TysPrim |
|---|
| 1938 | Ian Lynagh <igloo@earth.li>**20080412122846] |
|---|
| 1939 | [(F)SLIT -> (f)sLit in ForeignCall |
|---|
| 1940 | Ian Lynagh <igloo@earth.li>**20080412122757] |
|---|
| 1941 | [(F)SLIT -> (f)sLit in DataCon |
|---|
| 1942 | Ian Lynagh <igloo@earth.li>**20080412122709] |
|---|
| 1943 | [(F)SLIT -> (f)sLit in Coercion |
|---|
| 1944 | Ian Lynagh <igloo@earth.li>**20080412122627] |
|---|
| 1945 | [(F)SLIT -> (f)sLit in Type |
|---|
| 1946 | Ian Lynagh <igloo@earth.li>**20080412122524] |
|---|
| 1947 | [(F)SLIT -> (f)sLit in TypeRep |
|---|
| 1948 | Ian Lynagh <igloo@earth.li>**20080412122409] |
|---|
| 1949 | [(F)SLIT -> (f)sLit in VarEnv |
|---|
| 1950 | Ian Lynagh <igloo@earth.li>**20080412121437] |
|---|
| 1951 | [(F)SLIT -> (f)sLit in Class |
|---|
| 1952 | Ian Lynagh <igloo@earth.li>**20080412121245] |
|---|
| 1953 | [(F)SLIT -> (f)sLit in Class |
|---|
| 1954 | Ian Lynagh <igloo@earth.li>**20080412121211] |
|---|
| 1955 | [(F)SLIT -> (f)sLit in Var |
|---|
| 1956 | Ian Lynagh <igloo@earth.li>**20080412121140] |
|---|
| 1957 | [(F)SLIT -> (f)sLit in Name |
|---|
| 1958 | Ian Lynagh <igloo@earth.li>**20080412121050] |
|---|
| 1959 | [(F)SLIT -> (f)sLit in OccName |
|---|
| 1960 | Ian Lynagh <igloo@earth.li>**20080412121008] |
|---|
| 1961 | [(F)SLIT -> (f)sLit in SrcLoc |
|---|
| 1962 | Ian Lynagh <igloo@earth.li>**20080412120909] |
|---|
| 1963 | [(F)SLIT -> (f)sLit in Module |
|---|
| 1964 | Ian Lynagh <igloo@earth.li>**20080412120817] |
|---|
| 1965 | [(F)SLIT -> (f)sLit in BasicTypes |
|---|
| 1966 | Ian Lynagh <igloo@earth.li>**20080412120745] |
|---|
| 1967 | [(F)SLIT -> (f)sLit in Outputable |
|---|
| 1968 | Ian Lynagh <igloo@earth.li>**20080412120538] |
|---|
| 1969 | [SLIT -> sLit in Prety.lhs |
|---|
| 1970 | Ian Lynagh <igloo@earth.li>**20080412120004] |
|---|
| 1971 | [Don't use CPP for SLIT/FSLIT |
|---|
| 1972 | Ian Lynagh <igloo@earth.li>**20080412115745] |
|---|
| 1973 | [Simplify SimplCont, plus some other small changes to the Simplifier |
|---|
| 1974 | simonpj@microsoft.com**20080422120400 |
|---|
| 1975 | |
|---|
| 1976 | The main change in this patch is this: |
|---|
| 1977 | |
|---|
| 1978 | * The Stop constructor of SimplCont no longer contains the OutType |
|---|
| 1979 | of the whole continuation. This is a nice simplification in |
|---|
| 1980 | lots of places where we build a Stop continuation. For example, |
|---|
| 1981 | rebuildCall no longer needs to maintain the type of the function. |
|---|
| 1982 | |
|---|
| 1983 | * Similarly StrictArg no longer needs an OutType |
|---|
| 1984 | |
|---|
| 1985 | * The consequential complication is that contResultType (not called |
|---|
| 1986 | much) needs to be given the type of the thing in the middle. No |
|---|
| 1987 | big deal. |
|---|
| 1988 | |
|---|
| 1989 | * Lots of other small knock-on effects |
|---|
| 1990 | |
|---|
| 1991 | Other changes in here |
|---|
| 1992 | |
|---|
| 1993 | * simplLazyBind does do the type-abstraction thing if there's |
|---|
| 1994 | a lambda inside. See comments in simplLazyBind |
|---|
| 1995 | |
|---|
| 1996 | * simplLazyBind reduces simplifier iterations by keeping |
|---|
| 1997 | unfolding information for stuff for which type abstraction is |
|---|
| 1998 | done (see add_poly_bind) |
|---|
| 1999 | |
|---|
| 2000 | All of this came up when implementing System IF, but seems worth applying |
|---|
| 2001 | to the HEAD |
|---|
| 2002 | |
|---|
| 2003 | ] |
|---|
| 2004 | [Comments only in SimplCore |
|---|
| 2005 | simonpj@microsoft.com**20080422120304] |
|---|
| 2006 | [Comments only |
|---|
| 2007 | simonpj@microsoft.com**20080422120143] |
|---|
| 2008 | [Minor bug in SpecConstr |
|---|
| 2009 | simonpj@microsoft.com**20080422115238 |
|---|
| 2010 | |
|---|
| 2011 | In SpecConstr.isValue, we recorded a ConVal for a big-lambda, |
|---|
| 2012 | which seems wrong. I came across this when implementing System IF. |
|---|
| 2013 | The code now reads: |
|---|
| 2014 | |
|---|
| 2015 | isValue env (Lam b e) |
|---|
| 2016 | | isTyVar b = case isValue env e of |
|---|
| 2017 | Just _ -> Just LambdaVal -- NB! |
|---|
| 2018 | Nothing -> Nothing |
|---|
| 2019 | | otherwise = Just LambdaVal |
|---|
| 2020 | |
|---|
| 2021 | ] |
|---|
| 2022 | [Comments only |
|---|
| 2023 | simonpj@microsoft.com**20080422115221] |
|---|
| 2024 | [Fix a long-standing bug in FloatOut |
|---|
| 2025 | simonpj@microsoft.com**20080422115003 |
|---|
| 2026 | |
|---|
| 2027 | We really should not float anything out of an _inline_me_ Note, |
|---|
| 2028 | for reasons described in this new comment: |
|---|
| 2029 | -- Do no floating at all inside INLINE. |
|---|
| 2030 | -- The SetLevels pass did not clone the bindings, so it's |
|---|
| 2031 | -- unsafe to do any floating, even if we dump the results |
|---|
| 2032 | -- inside the Note (which is what we used to do). |
|---|
| 2033 | |
|---|
| 2034 | I'm about to get rid of these _inline_me_ Notes, but it's |
|---|
| 2035 | better to fix it anyway. I found this bug when implementing System IF. |
|---|
| 2036 | |
|---|
| 2037 | ] |
|---|
| 2038 | [Remove static flag opt_RuntimeTypes (has not been used in years) |
|---|
| 2039 | simonpj@microsoft.com**20080422114848] |
|---|
| 2040 | [Refactor the TyVarTy case of 'match'. No change in behaviour. |
|---|
| 2041 | simonpj@microsoft.com**20080422113014] |
|---|
| 2042 | [Add Note [Generating the in-scope set for a substitution] |
|---|
| 2043 | simonpj@microsoft.com**20080422112925] |
|---|
| 2044 | [Rename WpCo to WpCast |
|---|
| 2045 | simonpj@microsoft.com**20080422112804] |
|---|
| 2046 | [Fix #2044 (:printing impredicatively typed things) |
|---|
| 2047 | pepe <mnislaih@gmail.com>**20080421171322 |
|---|
| 2048 | |
|---|
| 2049 | Switching to boxyUnify should be enough to fix this. |
|---|
| 2050 | ] |
|---|
| 2051 | [Improve External Core syntax for newtypes |
|---|
| 2052 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080422045244 |
|---|
| 2053 | |
|---|
| 2054 | I was confused by the newtype eta-contraction trick before. |
|---|
| 2055 | Newtype declarations are much less redundant now. |
|---|
| 2056 | ] |
|---|
| 2057 | [Update External Core docs |
|---|
| 2058 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080422044342 |
|---|
| 2059 | |
|---|
| 2060 | Update documentation to reflect GHC HEAD. |
|---|
| 2061 | ] |
|---|
| 2062 | [External Core typechecker - improve handling of coercions |
|---|
| 2063 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080422015622 |
|---|
| 2064 | |
|---|
| 2065 | Reorganized coercion-related code in the typechecker (this was |
|---|
| 2066 | brought about by typechecking the Core versions of the optimized GHC |
|---|
| 2067 | libraries.) A few miscellaneous changes (fixed a bug in Prep involving |
|---|
| 2068 | eta-expanding partial applications that had additional type |
|---|
| 2069 | arguments.) |
|---|
| 2070 | ] |
|---|
| 2071 | [Naming changes in External Core |
|---|
| 2072 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080422012734 |
|---|
| 2073 | |
|---|
| 2074 | Two changes: |
|---|
| 2075 | - Top-level bindings in a given module are now printed as a |
|---|
| 2076 | single %rec group. I found that in External Core generated from |
|---|
| 2077 | optimized code, nonrec bindings weren't being printed in |
|---|
| 2078 | dependency order. Rather than fixing that, I decided to not |
|---|
| 2079 | even pretend to preserve dependency order (since there's |
|---|
| 2080 | recursion between modules anyway.) |
|---|
| 2081 | |
|---|
| 2082 | - Internal names are now printed with their uniques attached |
|---|
| 2083 | (otherwise, GHC was printing out code with shadowed bindings, |
|---|
| 2084 | and this isn't supposed to happen in External Core.) |
|---|
| 2085 | ] |
|---|
| 2086 | [Add clarifying comments about unsafeCoerce |
|---|
| 2087 | simonpj@microsoft.com**20080421152130] |
|---|
| 2088 | [Make the integer library to use more configurable |
|---|
| 2089 | Ian Lynagh <igloo@earth.li>**20080420195856 |
|---|
| 2090 | Now you just set INTEGER_LIBRARY=integer-foo in build.mk |
|---|
| 2091 | ] |
|---|
| 2092 | [Remove some duplicate extern decls |
|---|
| 2093 | Ian Lynagh <igloo@earth.li>**20080416162330] |
|---|
| 2094 | [Add some more generic (en|de)code(Double|Float) code |
|---|
| 2095 | Ian Lynagh <igloo@earth.li>**20080417171943] |
|---|
| 2096 | [Updates to handle Ordering moving from base to ghc-prim |
|---|
| 2097 | Ian Lynagh <igloo@earth.li>**20080412100657] |
|---|
| 2098 | [Fix lndir |
|---|
| 2099 | Ian Lynagh <igloo@earth.li>**20080408193436 |
|---|
| 2100 | It would copy when it should symlink, and vice-versa. |
|---|
| 2101 | ] |
|---|
| 2102 | [Improve External Core syntax |
|---|
| 2103 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080416000347 |
|---|
| 2104 | |
|---|
| 2105 | Got rid of the silly '^' characters before qualified names (plus: |
|---|
| 2106 | reverts to the original syntax; minus: makes the parser a little |
|---|
| 2107 | hairier.) |
|---|
| 2108 | |
|---|
| 2109 | Also, added warning in the typechecker for coercion kind mismatches |
|---|
| 2110 | rather than considering that a type error. (see the added comment in |
|---|
| 2111 | Check.hs for details.) |
|---|
| 2112 | ] |
|---|
| 2113 | [FIX BUILD (Windows): Copy the ln trick used by the GMP build |
|---|
| 2114 | Simon Marlow <simonmar@microsoft.com>**20080414173225] |
|---|
| 2115 | [Revive the static argument transformation |
|---|
| 2116 | simonpj@microsoft.com**20080411162137 |
|---|
| 2117 | |
|---|
| 2118 | This patch revives the Static Argument Transformation, thanks to |
|---|
| 2119 | Max Bolingbroke. It is enabled with |
|---|
| 2120 | -fstatic-argument-transformation |
|---|
| 2121 | or -O2 |
|---|
| 2122 | |
|---|
| 2123 | Headline nofib results |
|---|
| 2124 | |
|---|
| 2125 | Size Allocs Runtime |
|---|
| 2126 | Min +0.0% -13.7% -21.4% |
|---|
| 2127 | Max +0.1% +0.0% +5.4% |
|---|
| 2128 | Geometric Mean +0.0% -0.2% -6.9% |
|---|
| 2129 | |
|---|
| 2130 | |
|---|
| 2131 | ] |
|---|
| 2132 | [Transfer strictness and arity info when abstracting over type variables |
|---|
| 2133 | simonpj@microsoft.com**20080411142418 |
|---|
| 2134 | |
|---|
| 2135 | See Note [transferPolyIdInfo] in Id.lhs, and test |
|---|
| 2136 | eyeball/demand-on-polymorphic-floatouts.hs |
|---|
| 2137 | |
|---|
| 2138 | Max Bolingbroke discovered that we were gratuitiously losing strictness |
|---|
| 2139 | info. This simple patch fixes it. But see the above note for things |
|---|
| 2140 | that are still discarded: worker info and rules. |
|---|
| 2141 | |
|---|
| 2142 | ] |
|---|
| 2143 | [Revive External Core typechecker |
|---|
| 2144 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080414024648 |
|---|
| 2145 | |
|---|
| 2146 | The typechecker works again! Yay! |
|---|
| 2147 | |
|---|
| 2148 | Details upon request. |
|---|
| 2149 | ] |
|---|
| 2150 | [Eta-expand newtype coercions in External Core |
|---|
| 2151 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080414031654 |
|---|
| 2152 | |
|---|
| 2153 | Typechecking External Core is easier if we eta-expand axioms |
|---|
| 2154 | in newtype declarations. For a fuller explanation, see: |
|---|
| 2155 | http://www.haskell.org/pipermail/cvs-ghc/2008-April/041948.html |
|---|
| 2156 | ] |
|---|
| 2157 | [Extra info in genprimopcode --make-ext-core-source |
|---|
| 2158 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080414025407 |
|---|
| 2159 | |
|---|
| 2160 | The ext-core typechecker needs to know what types are |
|---|
| 2161 | valid for various kinds of literals, so I changed |
|---|
| 2162 | genprimopcode to dump out that information as well |
|---|
| 2163 | with --make-ext-core-source. |
|---|
| 2164 | ] |
|---|
| 2165 | [Fixing HPCTIXDIR problem with mkdir usage on Windows |
|---|
| 2166 | andy@galois.com**20080411220510] |
|---|
| 2167 | [Update .darcs-boring with utils/ext-core stuff |
|---|
| 2168 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080411185734] |
|---|
| 2169 | [FIX #2197: an update frame might point to an IND_OLDGEN |
|---|
| 2170 | Simon Marlow <simonmar@microsoft.com>**20080411173404] |
|---|
| 2171 | [Rejig error reporting in the unifier slightly |
|---|
| 2172 | simonpj@microsoft.com**20080411132350] |
|---|
| 2173 | [Improve error message layout slightly |
|---|
| 2174 | simonpj@microsoft.com**20080410113105] |
|---|
| 2175 | [Two improvements to boxy matching |
|---|
| 2176 | simonpj@microsoft.com**20080410112812 |
|---|
| 2177 | |
|---|
| 2178 | I can't quite remember what provoked these two changes, but they are in my |
|---|
| 2179 | tree. |
|---|
| 2180 | One improves boxy_match (which failed unnecessarily) |
|---|
| 2181 | One fixes boxy_lub (which was assymetrical) |
|---|
| 2182 | |
|---|
| 2183 | ] |
|---|
| 2184 | [Fix Trac #2206: ensure the return type is rigid in a GADT match |
|---|
| 2185 | simonpj@microsoft.com**20080410111514 |
|---|
| 2186 | |
|---|
| 2187 | ] |
|---|
| 2188 | [Fix Trac #2205, which I introduced recently |
|---|
| 2189 | simonpj@microsoft.com**20080410094336] |
|---|
| 2190 | [Ensure that arity is accurate in back end |
|---|
| 2191 | simonpj@microsoft.com**20080410084930 |
|---|
| 2192 | |
|---|
| 2193 | See Note [exprArity invariant] in CoreUtils. In code generated by Happy |
|---|
| 2194 | I was seeing this after TidyPgm and CorePrep |
|---|
| 2195 | |
|---|
| 2196 | f :: Any |
|---|
| 2197 | f {arity 1} = id `cast` unsafe-co |
|---|
| 2198 | |
|---|
| 2199 | So f claimed to have arity 1 (because exprArity looked inside), but |
|---|
| 2200 | did not have any top-level lambdas (because its type is Any). |
|---|
| 2201 | |
|---|
| 2202 | This triggered a slightly-obscure ASSERT failure in CoreToStg |
|---|
| 2203 | |
|---|
| 2204 | This patch |
|---|
| 2205 | - makes exprArity trim the arity if the type is not a function |
|---|
| 2206 | - adds a stronger ASSERT in TidyPgm |
|---|
| 2207 | |
|---|
| 2208 | It's not the only way to solve this problem (see Note [exprArity invariant]) |
|---|
| 2209 | but it's enough for now. |
|---|
| 2210 | |
|---|
| 2211 | ] |
|---|
| 2212 | [Make the arity and strictness agree, for wired-in bottoming Ids |
|---|
| 2213 | simonpj@microsoft.com**20080410082619] |
|---|
| 2214 | [Fix bug in vectorisation of case expressions |
|---|
| 2215 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080411045307] |
|---|
| 2216 | [Extend genprimopcode to print primop types for ext-core |
|---|
| 2217 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080410185810 |
|---|
| 2218 | |
|---|
| 2219 | I added a new flag, --make-ext-core-source, to genprimopcode. It prints out the |
|---|
| 2220 | type information for primops that the External Core typechecker needs. This |
|---|
| 2221 | replaces the old mechanism where the ext-core tools had a hard-wired Prims |
|---|
| 2222 | module that could get out of sync with the old primops.txt. Now, that won't happen. |
|---|
| 2223 | ] |
|---|
| 2224 | [add pointers to the wiki for the rules about C prototypes |
|---|
| 2225 | Simon Marlow <simonmar@microsoft.com>**20080409204143] |
|---|
| 2226 | [avoid warnings from ffi.h when UseLibFFIForAdjustors=YES |
|---|
| 2227 | Simon Marlow <simonmar@microsoft.com>**20080409204048] |
|---|
| 2228 | [FIX BUILD (bootstrap with -fvia-C): prototype fixes |
|---|
| 2229 | Simon Marlow <simonmar@microsoft.com>**20080409203724 |
|---|
| 2230 | |
|---|
| 2231 | ] |
|---|
| 2232 | [Another round of External Core fixes |
|---|
| 2233 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080410043727 |
|---|
| 2234 | |
|---|
| 2235 | With this patch, GHC should now be printing External Core in a format |
|---|
| 2236 | that a stand-alone program can parse and typecheck. Major bug fixes: |
|---|
| 2237 | |
|---|
| 2238 | - The printer now handles qualified/unqualified declarations correctly |
|---|
| 2239 | (particularly data constructor declarations) |
|---|
| 2240 | - It prints newtype declarations with enough information to |
|---|
| 2241 | typecheck code that uses the induced coercions (this required a |
|---|
| 2242 | syntax change) |
|---|
| 2243 | - It expands type synonyms correctly |
|---|
| 2244 | |
|---|
| 2245 | Documentation and external tool patches will follow. |
|---|
| 2246 | |
|---|
| 2247 | ] |
|---|
| 2248 | [Adding environment variable HPCTIXDIR, a directory to place tix results. |
|---|
| 2249 | andy@galois.com**20080408232450] |
|---|
| 2250 | [Fixing hpc combine and hpc map to use the correct help message |
|---|
| 2251 | andy@galois.com**20080408232032] |
|---|
| 2252 | [Import libffi-3.0.4, and use it to provide FFI support in GHCi |
|---|
| 2253 | Simon Marlow <simonmar@microsoft.com>**20080408183434 |
|---|
| 2254 | |
|---|
| 2255 | This replaces the hand-rolled architecture-specific FFI support in |
|---|
| 2256 | GHCi with the standard libffi as used in GCJ, Python and other |
|---|
| 2257 | projects. I've bundled the complete libffi-3.0.4 tarball in the |
|---|
| 2258 | source tree in the same way as we do for GMP, the difference being |
|---|
| 2259 | that we always build and install our own libffi regardless of whether |
|---|
| 2260 | there's one on the system (it's small, and we don't want |
|---|
| 2261 | dependency/versioning headaches). |
|---|
| 2262 | |
|---|
| 2263 | In particular this means that unregisterised builds will now have a |
|---|
| 2264 | fully working GHCi including FFI out of the box, provided libffi |
|---|
| 2265 | supports the platform. |
|---|
| 2266 | |
|---|
| 2267 | There is also code in the RTS to use libffi in place of |
|---|
| 2268 | rts/Adjustor.c, but it is currently not enabled if we already have |
|---|
| 2269 | support in Adjustor.c for the current platform. We need to assess the |
|---|
| 2270 | performance impact before using libffi here too (in GHCi we don't care |
|---|
| 2271 | too much about performance). |
|---|
| 2272 | ] |
|---|
| 2273 | [FIX BUILD on non-x86: add missing prototypes |
|---|
| 2274 | Simon Marlow <simonmar@microsoft.com>**20080407213748] |
|---|
| 2275 | [update a comment |
|---|
| 2276 | Simon Marlow <simonmar@microsoft.com>**20080407212437] |
|---|
| 2277 | [remove dead code |
|---|
| 2278 | Simon Marlow <simonmar@microsoft.com>**20080403223422] |
|---|
| 2279 | [Replace one occurance of CVS with darcs in HACKING |
|---|
| 2280 | Samuel Bronson <naesten@gmail.com>**20080407222006] |
|---|
| 2281 | [Remove GADT refinements, part 5 |
|---|
| 2282 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080407070728 |
|---|
| 2283 | - TcGadt RIP |
|---|
| 2284 | - The non-side effecting unification code is now in types/Unify.lhs |
|---|
| 2285 | along with the refinement code needed for GADT record selectors. |
|---|
| 2286 | ] |
|---|
| 2287 | [Remove GADT refinements, part 4 |
|---|
| 2288 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080303063347 |
|---|
| 2289 | - MkId.mkRecordSelId only used a special case of refineGadt, which doesn't |
|---|
| 2290 | need full unification. That special case is now implemented as |
|---|
| 2291 | TcGadt.matchRefine and TcGadt.refineGadt can finally go. |
|---|
| 2292 | ] |
|---|
| 2293 | [Improve error message for malformed LANGUAGE pragma |
|---|
| 2294 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080406202333 |
|---|
| 2295 | |
|---|
| 2296 | I made the error (which previously said "cannot parse LANGUAGE |
|---|
| 2297 | pragma") slightly more helpful by reminding the user that pragmas |
|---|
| 2298 | should be comma-separated. |
|---|
| 2299 | ] |
|---|
| 2300 | [Improve error message for non-matching file name |
|---|
| 2301 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080406193821 |
|---|
| 2302 | |
|---|
| 2303 | I changed the "File name does not match module name" error message so |
|---|
| 2304 | that it prints out both the declared module name and the expected |
|---|
| 2305 | module name (before, it was only printing the declared module name.) |
|---|
| 2306 | ] |
|---|
| 2307 | [Virtualize the cwd in GHCi |
|---|
| 2308 | Pepe Iborra <mnislaih@gmail.com>**20080405145136 |
|---|
| 2309 | |
|---|
| 2310 | This fixes the issue where :list would stop working if the |
|---|
| 2311 | program being debugged side-effected the working directory, |
|---|
| 2312 | and should prevent other similar issues |
|---|
| 2313 | |
|---|
| 2314 | ] |
|---|
| 2315 | [Fix rendering of references in :print under -fprint-evld-with-show flag |
|---|
| 2316 | Pepe Iborra <mnislaih@gmail.com>**20071219174431] |
|---|
| 2317 | [Fix Trac #2188: scoping in TH declarations quotes |
|---|
| 2318 | simonpj@microsoft.com**20080404205556 |
|---|
| 2319 | |
|---|
| 2320 | This patch fixes a rather tiresome issue, namely the fact that |
|---|
| 2321 | a TH declaration quote *shadows* bindings in outer scopes: |
|---|
| 2322 | |
|---|
| 2323 | f g = [d| f :: Int |
|---|
| 2324 | f = g |
|---|
| 2325 | g :: Int |
|---|
| 2326 | g = 4 |] |
|---|
| 2327 | |
|---|
| 2328 | Here, the outer bindings for 'f' (top-level) and 'g' (local) |
|---|
| 2329 | are shadowed, and the inner bindings for f,g should not be |
|---|
| 2330 | reported as duplicates. (Remember they are top-level bindings.) |
|---|
| 2331 | |
|---|
| 2332 | The actual bug was that we'd forgotten to delete 'g' from the |
|---|
| 2333 | LocalRdrEnv, so the type sig for 'g' was binding to the outer |
|---|
| 2334 | 'g' not the inner one. |
|---|
| 2335 | |
|---|
| 2336 | ] |
|---|
| 2337 | [Fix simplifier thrashing |
|---|
| 2338 | simonpj@microsoft.com**20080403223819 |
|---|
| 2339 | |
|---|
| 2340 | Another example of the simplifier thrashing, getting nowhere. |
|---|
| 2341 | See SimplUtils, Note [Unsaturated functions] |
|---|
| 2342 | |
|---|
| 2343 | There's a test at eyeball/inline4.hs |
|---|
| 2344 | |
|---|
| 2345 | ] |
|---|
| 2346 | [Fix Trac #2179: error message for main |
|---|
| 2347 | simonpj@microsoft.com**20080403173746 |
|---|
| 2348 | |
|---|
| 2349 | A short-cut to generate the (runMainIO main) wrapper turned out |
|---|
| 2350 | to make a bad error message. This should fix it. |
|---|
| 2351 | |
|---|
| 2352 | ] |
|---|
| 2353 | [Fix Trac #2136: reporting of unused variables |
|---|
| 2354 | simonpj@microsoft.com**20080403110250 |
|---|
| 2355 | |
|---|
| 2356 | There's a bit of a hack RnBinds.rnValBindsAndThen, documented |
|---|
| 2357 | in Note [Unused binding hack]. But the hack was over brutal |
|---|
| 2358 | before, and produced unnecssarily bad (absence of) warnings. |
|---|
| 2359 | This patch does a bit of refactoring; and fixes the bug in |
|---|
| 2360 | rnValBindsAndThen. |
|---|
| 2361 | |
|---|
| 2362 | ] |
|---|
| 2363 | [Fix Trac #2137: report correct location for shadowed binding |
|---|
| 2364 | simonpj@microsoft.com**20080402153410 |
|---|
| 2365 | |
|---|
| 2366 | The error message generation for a shadowed binding was |
|---|
| 2367 | plain wrong, at least where the shadowed binding isn't |
|---|
| 2368 | top-level. Just a typo really -- the fix is trivial. |
|---|
| 2369 | |
|---|
| 2370 | ] |
|---|
| 2371 | [Fix Trac #2141: invalid record update |
|---|
| 2372 | simonpj@microsoft.com**20080402132057 |
|---|
| 2373 | |
|---|
| 2374 | See Note [Record field lookup] in TcEnv. The fix here |
|---|
| 2375 | is quite straightforward. |
|---|
| 2376 | |
|---|
| 2377 | ] |
|---|
| 2378 | [Do not #include external header files when compiling via C |
|---|
| 2379 | Simon Marlow <simonmar@microsoft.com>**20080402051412 |
|---|
| 2380 | |
|---|
| 2381 | This has several advantages: |
|---|
| 2382 | |
|---|
| 2383 | - -fvia-C is consistent with -fasm with respect to FFI declarations: |
|---|
| 2384 | both bind to the ABI, not the API. |
|---|
| 2385 | |
|---|
| 2386 | - foreign calls can now be inlined freely across module boundaries, since |
|---|
| 2387 | a header file is not required when compiling the call. |
|---|
| 2388 | |
|---|
| 2389 | - bootstrapping via C will be more reliable, because this difference |
|---|
| 2390 | in behavour between the two backends has been removed. |
|---|
| 2391 | |
|---|
| 2392 | There is one disadvantage: |
|---|
| 2393 | |
|---|
| 2394 | - we get no checking by the C compiler that the FFI declaration |
|---|
| 2395 | is correct. |
|---|
| 2396 | |
|---|
| 2397 | So now, the c-includes field in a .cabal file is always ignored by |
|---|
| 2398 | GHC, as are header files specified in an FFI declaration. This was |
|---|
| 2399 | previously the case only for -fasm compilations, now it is also the |
|---|
| 2400 | case for -fvia-C too. |
|---|
| 2401 | ] |
|---|
| 2402 | [Derive a valid Ix instance for data Foo = Foo Int Int |
|---|
| 2403 | Ian Lynagh <igloo@earth.li>**20080330182813 |
|---|
| 2404 | The old one didn't satisfy the axioms. See trac #2158 for details. |
|---|
| 2405 | ] |
|---|
| 2406 | [Revive External Core parser |
|---|
| 2407 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080329223948 |
|---|
| 2408 | |
|---|
| 2409 | Huzzah, the External Core parser will now parse External Core generated by |
|---|
| 2410 | the HEAD. |
|---|
| 2411 | |
|---|
| 2412 | Most notably, I rewrote the parser in Parsec, but the old Happy version |
|---|
| 2413 | remains in the repository. |
|---|
| 2414 | |
|---|
| 2415 | I checked all the nofib benchmarks and most of the ghc-prim, base and integer |
|---|
| 2416 | libraries to make sure they parsed; one known bug: |
|---|
| 2417 | - Strings like "\x0aE", in which a hex escape code is followed by a |
|---|
| 2418 | letter that could be a hex digit, aren't handled properly. I'm |
|---|
| 2419 | investigating whether this is a bug in Parsec or expected behavior. |
|---|
| 2420 | |
|---|
| 2421 | The checker and interpreter still don't work, but should compile. |
|---|
| 2422 | |
|---|
| 2423 | Please mess around with the parser, report bugs, improve my code, etc., |
|---|
| 2424 | if you're so inclined. |
|---|
| 2425 | |
|---|
| 2426 | ] |
|---|
| 2427 | [Fix big character literal printing in External Core |
|---|
| 2428 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080329221109 |
|---|
| 2429 | |
|---|
| 2430 | Characters bigger than '\xff' should be represented as int |
|---|
| 2431 | literals in External Core. (This was originally fixed five years ago |
|---|
| 2432 | and broken again four and a half years ago...) |
|---|
| 2433 | ] |
|---|
| 2434 | [External Core: don't print superfluous parens in case types |
|---|
| 2435 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080329194629 |
|---|
| 2436 | |
|---|
| 2437 | The External Core printer was parenthesizing the scrutinee type in case expressions. Since this type is required to be atomic, the parens aren't necessary. |
|---|
| 2438 | ] |
|---|
| 2439 | [Don't import FastString in HsVersions.h |
|---|
| 2440 | Ian Lynagh <igloo@earth.li>**20080329185043 |
|---|
| 2441 | Modules that need it import it themselves instead. |
|---|
| 2442 | ] |
|---|
| 2443 | [DEBUG removal |
|---|
| 2444 | Ian Lynagh <igloo@earth.li>**20080329171135] |
|---|
| 2445 | [DEBUG removal |
|---|
| 2446 | Ian Lynagh <igloo@earth.li>**20080329171013] |
|---|
| 2447 | [DEBUG removal |
|---|
| 2448 | Ian Lynagh <igloo@earth.li>**20080329170935] |
|---|
| 2449 | [DEBUG removal |
|---|
| 2450 | Ian Lynagh <igloo@earth.li>**20080329170341] |
|---|
| 2451 | [DEBUG removal |
|---|
| 2452 | Ian Lynagh <igloo@earth.li>**20080329170227] |
|---|
| 2453 | [DEBUG removal |
|---|
| 2454 | Ian Lynagh <igloo@earth.li>**20080329165412] |
|---|
| 2455 | [Fix typo; spotted by Bdh in #ghc |
|---|
| 2456 | Ian Lynagh <igloo@earth.li>**20080329165303] |
|---|
| 2457 | [DEBUG removal |
|---|
| 2458 | Ian Lynagh <igloo@earth.li>**20080329164849] |
|---|
| 2459 | [DEBUG removal |
|---|
| 2460 | Ian Lynagh <igloo@earth.li>**20080329164420] |
|---|
| 2461 | [Remove a DEBUG use |
|---|
| 2462 | Ian Lynagh <igloo@earth.li>**20080329164209] |
|---|
| 2463 | [Remove a DEBUG |
|---|
| 2464 | Ian Lynagh <igloo@earth.li>**20080329163936] |
|---|
| 2465 | [Remove more #ifdef DEBUGs |
|---|
| 2466 | Ian Lynagh <igloo@earth.li>**20080329145716] |
|---|
| 2467 | [Remove an #ifdef DEBUG |
|---|
| 2468 | Ian Lynagh <igloo@earth.li>**20080329145508] |
|---|
| 2469 | [Remove an #ifdef DEBUG |
|---|
| 2470 | Ian Lynagh <igloo@earth.li>**20080329145244] |
|---|
| 2471 | [Remove an #ifdef DEBUG |
|---|
| 2472 | Ian Lynagh <igloo@earth.li>**20080329144844] |
|---|
| 2473 | [Remove a #ifdef DEBUG |
|---|
| 2474 | Ian Lynagh <igloo@earth.li>**20080329144658] |
|---|
| 2475 | [Remove an #ifdef DEBUG |
|---|
| 2476 | Ian Lynagh <igloo@earth.li>**20080329144544] |
|---|
| 2477 | [Remove some redundant code |
|---|
| 2478 | Ian Lynagh <igloo@earth.li>**20080329144226] |
|---|
| 2479 | [prelude/PrimOp is now mostly warning-free |
|---|
| 2480 | Ian Lynagh <igloo@earth.li>**20080329143914 |
|---|
| 2481 | commutableOp seems to be unused, so we're no 100% there yet. |
|---|
| 2482 | ] |
|---|
| 2483 | [Fix warnings from primops.txt.pp |
|---|
| 2484 | Ian Lynagh <igloo@earth.li>**20080329142637] |
|---|
| 2485 | [Use _ rather than "other" in generated code |
|---|
| 2486 | Ian Lynagh <igloo@earth.li>**20080329142508] |
|---|
| 2487 | [Fix some warnings |
|---|
| 2488 | Ian Lynagh <igloo@earth.li>**20080329142219] |
|---|
| 2489 | [Remove some redundant imports |
|---|
| 2490 | Ian Lynagh <igloo@earth.li>**20080329141809] |
|---|
| 2491 | [Remove an #ifdef DEBUG |
|---|
| 2492 | Ian Lynagh <igloo@earth.li>**20080329141733] |
|---|
| 2493 | [Remove an #ifdef DEBUG |
|---|
| 2494 | Ian Lynagh <igloo@earth.li>**20080329141629] |
|---|
| 2495 | [Remove some unnecessary imports |
|---|
| 2496 | Ian Lynagh <igloo@earth.li>**20080329141145] |
|---|
| 2497 | [Remove an unnecessary #ifdef DEBUG |
|---|
| 2498 | Ian Lynagh <igloo@earth.li>**20080329141047] |
|---|
| 2499 | [Another debugIsOn use |
|---|
| 2500 | Ian Lynagh <igloo@earth.li>**20080329140126] |
|---|
| 2501 | [Convert some DEBUG uses to debugIsOn |
|---|
| 2502 | Ian Lynagh <igloo@earth.li>**20080329135950] |
|---|
| 2503 | [Put debugIsOn in Util, rather than rely on it being CPPed in |
|---|
| 2504 | Ian Lynagh <igloo@earth.li>**20080329135755] |
|---|
| 2505 | [External Core: print function types correctly, improve newtype pretty-printing |
|---|
| 2506 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080328222630 |
|---|
| 2507 | |
|---|
| 2508 | - In a previous patch I broke the printing of fully-applied arrow |
|---|
| 2509 | types (e.g., "a -> b" was "(ghczmprim:GHCziPrim a b)") by z-encoding |
|---|
| 2510 | package names and not updating the primitive module name as defined in |
|---|
| 2511 | External Core accordingly. Fixed. (Mega sigh...) |
|---|
| 2512 | |
|---|
| 2513 | - Make newtype decls print slightly more readably. |
|---|
| 2514 | ] |
|---|
| 2515 | [Print out rational literals correctly in External Core |
|---|
| 2516 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080328211919 |
|---|
| 2517 | |
|---|
| 2518 | The External Core printer was printing out rational literals of the |
|---|
| 2519 | form: |
|---|
| 2520 | 2.0e-2 |
|---|
| 2521 | when the External Core grammar doesn't allow this. (This |
|---|
| 2522 | bug has apparently been there since the beginning...) |
|---|
| 2523 | |
|---|
| 2524 | It's now printing rationals in the same form that (show (r::Rational)) |
|---|
| 2525 | does. This requires a parser change as well (soon to come.) |
|---|
| 2526 | ] |
|---|
| 2527 | [Change syntax for qualified names in External Core |
|---|
| 2528 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080327185436 |
|---|
| 2529 | |
|---|
| 2530 | Two changes that make the ext-core code uglier but the parser easier: |
|---|
| 2531 | |
|---|
| 2532 | - Prefix qualified names with "^" so that we can more easily |
|---|
| 2533 | distinguish a qualified name: |
|---|
| 2534 | ^a:Foo.Bar.quux |
|---|
| 2535 | from an unqualified name: |
|---|
| 2536 | a |
|---|
| 2537 | |
|---|
| 2538 | - z-encode package names ("ghc-prim" was the culprit.) |
|---|
| 2539 | ] |
|---|
| 2540 | [Make use of the SDoc type synonym |
|---|
| 2541 | Ian Lynagh <igloo@earth.li>**20080326175306] |
|---|
| 2542 | [Fix warnings in rename/RnTypes |
|---|
| 2543 | Ian Lynagh <igloo@earth.li>**20080326174657] |
|---|
| 2544 | [Fix warnings in basicTypes/IdInfo |
|---|
| 2545 | Ian Lynagh <igloo@earth.li>**20080326170014] |
|---|
| 2546 | [Fix warnings in basicTypes/NameEnv |
|---|
| 2547 | Ian Lynagh <igloo@earth.li>**20080326165139] |
|---|
| 2548 | [Fix warnings in basicTypes/NameSet |
|---|
| 2549 | Ian Lynagh <igloo@earth.li>**20080326164837] |
|---|
| 2550 | [Fix warning in basicTypes/NewDemand |
|---|
| 2551 | Ian Lynagh <igloo@earth.li>**20080326160017] |
|---|
| 2552 | [Fix warnings in basicTypes/VarEnv |
|---|
| 2553 | Ian Lynagh <igloo@earth.li>**20080326155412] |
|---|
| 2554 | [Fix warnings in basicTypes/VarSet |
|---|
| 2555 | Ian Lynagh <igloo@earth.li>**20080326155105] |
|---|
| 2556 | [main/BreakArray has no warnings |
|---|
| 2557 | Ian Lynagh <igloo@earth.li>**20080326154747] |
|---|
| 2558 | [In validate settings, make -Werror easier to override |
|---|
| 2559 | Ian Lynagh <igloo@earth.li>**20080326141030] |
|---|
| 2560 | [Remove a redundant type sig |
|---|
| 2561 | Ian Lynagh <igloo@earth.li>**20080326004932] |
|---|
| 2562 | [Fix warnings in main/DriverPhases |
|---|
| 2563 | Ian Lynagh <igloo@earth.li>**20080325235828] |
|---|
| 2564 | [Remove redundant type sig |
|---|
| 2565 | Ian Lynagh <igloo@earth.li>**20080325235801] |
|---|
| 2566 | [Fix warnings in main/HscStats |
|---|
| 2567 | Ian Lynagh <igloo@earth.li>**20080325234110] |
|---|
| 2568 | [Fix warnings in main/Constants |
|---|
| 2569 | Ian Lynagh <igloo@earth.li>**20080325233034] |
|---|
| 2570 | [Fix warnings in main/InteractiveEval |
|---|
| 2571 | Ian Lynagh <igloo@earth.li>**20080325230153] |
|---|
| 2572 | [Fix warnings in main/Packages |
|---|
| 2573 | Ian Lynagh <igloo@earth.li>**20080325224444] |
|---|
| 2574 | [Fix warnings in main/PprTyThing |
|---|
| 2575 | Ian Lynagh <igloo@earth.li>**20080325223104] |
|---|
| 2576 | [Fix warnings in main/StaticFlags |
|---|
| 2577 | Ian Lynagh <igloo@earth.li>**20080325221632] |
|---|
| 2578 | [Change syntax for newtypes in External Core |
|---|
| 2579 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080325170218 |
|---|
| 2580 | |
|---|
| 2581 | The way that newtype declarations were printed in External Core files was |
|---|
| 2582 | incomplete, since there was no declaration for the coercion introduced by a |
|---|
| 2583 | newtype. |
|---|
| 2584 | |
|---|
| 2585 | For example, the Haskell source: |
|---|
| 2586 | |
|---|
| 2587 | newtype T a = MkT (a -> a) |
|---|
| 2588 | |
|---|
| 2589 | foo (MkT x) = x |
|---|
| 2590 | |
|---|
| 2591 | got printed out in External Core as (roughly): |
|---|
| 2592 | |
|---|
| 2593 | %newtype T a = a -> a; |
|---|
| 2594 | |
|---|
| 2595 | foo :: %forall t . T t -> t -> t = |
|---|
| 2596 | %cast (\ @ t -> a1 @ t) |
|---|
| 2597 | (%forall t . T t -> ZCCoT t); |
|---|
| 2598 | |
|---|
| 2599 | There is no declaration anywhere in the External Core program for :CoT, so |
|---|
| 2600 | that's bad. |
|---|
| 2601 | |
|---|
| 2602 | I changed the newtype decl syntax so as to include the declaration for the |
|---|
| 2603 | coercion axiom introduced by the newtype. Now, it looks like: |
|---|
| 2604 | |
|---|
| 2605 | %newtype T a ^ (ZCCoT :: ((T a) :=: (a -> a))) = a -> a; |
|---|
| 2606 | |
|---|
| 2607 | And an external typechecker could conceivably typecheck code that uses this. |
|---|
| 2608 | |
|---|
| 2609 | The major changes are to MkExternalCore and PprExternalCore (as well as |
|---|
| 2610 | ExternalCore, to change the External Core AST.) I also corrected some typos in |
|---|
| 2611 | comments in other files. |
|---|
| 2612 | |
|---|
| 2613 | Documentation and external tool changes to follow. |
|---|
| 2614 | |
|---|
| 2615 | ] |
|---|
| 2616 | [Fix warnings in the RTS |
|---|
| 2617 | Ian Lynagh <igloo@earth.li>**20080325160314 |
|---|
| 2618 | For some reason this causes build failures for me in my 32-bit chroot, |
|---|
| 2619 | ] |
|---|
| 2620 | [Another change for GHC.PrimopWrappers moving from base to ghc-prim |
|---|
| 2621 | Ian Lynagh <igloo@earth.li>**20080324224006] |
|---|
| 2622 | [Update darcs-boring |
|---|
| 2623 | Ian Lynagh <igloo@earth.li>**20080324212319] |
|---|
| 2624 | [Fix primMname in External Core printer |
|---|
| 2625 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080324014311 |
|---|
| 2626 | |
|---|
| 2627 | My earlier changes broke printing of function types in .hcr files. |
|---|
| 2628 | In other words: the z-encoding must die. |
|---|
| 2629 | ] |
|---|
| 2630 | [Fix primMname in External Core printer |
|---|
| 2631 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080324005246 |
|---|
| 2632 | |
|---|
| 2633 | My earlier changes broke printing of function types in .hcr files. |
|---|
| 2634 | In other words: the z-encoding must die. |
|---|
| 2635 | ] |
|---|
| 2636 | [Follow library changes |
|---|
| 2637 | Ian Lynagh <igloo@earth.li>**20080323182557 |
|---|
| 2638 | Integer, Bool and Unit/Inl/Inr are now in new packages integer |
|---|
| 2639 | and ghc-prim. |
|---|
| 2640 | ] |
|---|
| 2641 | [CgTicky now doesn't know about the Integer data constructors |
|---|
| 2642 | Ian Lynagh <igloo@earth.li>**20080320195836] |
|---|
| 2643 | [-DDEBUG build fix |
|---|
| 2644 | Ian Lynagh <igloo@earth.li>**20080322140641] |
|---|
| 2645 | [Rename rebuild to remake, and define rebuild to "clean; build" |
|---|
| 2646 | Ian Lynagh <igloo@earth.li>**20080320221915] |
|---|
| 2647 | [Handle hierarchical module names in External Core tools |
|---|
| 2648 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080320014449 |
|---|
| 2649 | |
|---|
| 2650 | I updated the parser to handle hierarchical module names (with package names) |
|---|
| 2651 | the way GHC is currently printing them out in External Core. |
|---|
| 2652 | |
|---|
| 2653 | Beware kludgy use of z-encoding and gratutious copy-pasta from GHC. |
|---|
| 2654 | |
|---|
| 2655 | You can now use the stand-alone Core parser to parse a very simple |
|---|
| 2656 | GHC-generated .hcr file (progress!) but not to typecheck or interpret it |
|---|
| 2657 | (the typechecker/interpreter don't snarf in the right libraries yet, among |
|---|
| 2658 | other things.) And, the parser is still incomplete in that it doesn't handle |
|---|
| 2659 | programs with newtypes/GADTs/etc. whose syntax has changed since 2003. In |
|---|
| 2660 | other words: probably don't try to use this yet. |
|---|
| 2661 | |
|---|
| 2662 | ] |
|---|
| 2663 | [Improve hierarchical module name handling in MkExternalCore |
|---|
| 2664 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080319190429 |
|---|
| 2665 | |
|---|
| 2666 | It's easier for the External Core parser if MkExternalCore prints |
|---|
| 2667 | module names like: |
|---|
| 2668 | base:GHCziBase |
|---|
| 2669 | rather than like: |
|---|
| 2670 | base:GHC.Base |
|---|
| 2671 | (which it was doing before.) |
|---|
| 2672 | |
|---|
| 2673 | So now we z-encode the hierarchical module-name part of a module |
|---|
| 2674 | name, but don't z-encode the ':'. |
|---|
| 2675 | |
|---|
| 2676 | I also removed some old comments that don't seem relevant anymore. |
|---|
| 2677 | ] |
|---|
| 2678 | [Fixed remaining warning in coreSyn/MkExternalCore |
|---|
| 2679 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080319182521 |
|---|
| 2680 | |
|---|
| 2681 | There was a (suppressed) warning about an incomplete pattern match in make_alt. This was because the DEFAULT alt never has variable bindings. I thought it would be better to check that case and panic if it happens than to have an incomplete pattern. It's still not great, but at least now we don't have to suppress any warnings in this file. |
|---|
| 2682 | ] |
|---|
| 2683 | [Revert an accidental change |
|---|
| 2684 | Ian Lynagh <igloo@earth.li>**20080317200130] |
|---|
| 2685 | [Print some extra debugging info when doing --show-iface |
|---|
| 2686 | Ian Lynagh <igloo@earth.li>**20080317185032] |
|---|
| 2687 | [Eliminate a global variable |
|---|
| 2688 | Ian Lynagh <igloo@earth.li>**20080317180150 |
|---|
| 2689 | Very little parameter passing is needed without it, so there was no real |
|---|
| 2690 | benefit to it. |
|---|
| 2691 | ] |
|---|
| 2692 | [Follow changes in editline |
|---|
| 2693 | Ian Lynagh <igloo@earth.li>**20080317103617] |
|---|
| 2694 | [Use editline instead of readline |
|---|
| 2695 | Ian Lynagh <igloo@earth.li>**20080316060407] |
|---|
| 2696 | [Vectorise tuple constructorsn |
|---|
| 2697 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080317033436] |
|---|
| 2698 | [Added double divide and unzipP |
|---|
| 2699 | keller@cse.unsw.edu.au**20080317025553] |
|---|
| 2700 | [Added 'div' to set of vectorising functions |
|---|
| 2701 | keller@cse.unsw.edu.au**20080311125035] |
|---|
| 2702 | [If unregisterised, link with -optl-Wl,--relax on IA64 |
|---|
| 2703 | Ian Lynagh <igloo@earth.li>**20080316214104 |
|---|
| 2704 | This fixes part of trac #856 |
|---|
| 2705 | ] |
|---|
| 2706 | [When concatenating variables in Makefile, strip spaces in case one is empty |
|---|
| 2707 | Ian Lynagh <igloo@earth.li>**20080315141751 |
|---|
| 2708 | Otherwise "$(A) $(B)" will not be equal to "" even if A and B are empty. |
|---|
| 2709 | Trac #856. |
|---|
| 2710 | ] |
|---|
| 2711 | [Fix a space leak in :trace (trac #2128) |
|---|
| 2712 | Ian Lynagh <igloo@earth.li>**20080316211748 |
|---|
| 2713 | We were doing lots of cons'ing and tail'ing without forcing the tails, |
|---|
| 2714 | so were building up lots of thunks. |
|---|
| 2715 | ] |
|---|
| 2716 | [If we are failing due to a warning and -Werror, say so |
|---|
| 2717 | Ian Lynagh <igloo@earth.li>**20080316195636 |
|---|
| 2718 | Fixes trac #1893, based on a patch from Daniel Franke. |
|---|
| 2719 | ] |
|---|
| 2720 | [Remove leftover NoteTy/FTVNote bits |
|---|
| 2721 | Ian Lynagh <igloo@earth.li>**20080315194220] |
|---|
| 2722 | [Remove uses of addFreeTyVars |
|---|
| 2723 | Ian Lynagh <igloo@earth.li>**20080315155027 |
|---|
| 2724 | This optimisation actually make things a bit slower on average, as |
|---|
| 2725 | measured by nofib. The example in #1136 in particular suffers from high |
|---|
| 2726 | memory usage. Therefore we no longer do the optimisation. |
|---|
| 2727 | ] |
|---|
| 2728 | [parsing tweak for :break |
|---|
| 2729 | Simon Marlow <simonmar@microsoft.com>**20080313182936] |
|---|
| 2730 | [Tweaks to stack squeezing |
|---|
| 2731 | Simon Marlow <simonmar@microsoft.com>**20080207122445 |
|---|
| 2732 | |
|---|
| 2733 | 1. We weren't squeezing two frames if one of them was a marked update |
|---|
| 2734 | frame. This is easy to fix. |
|---|
| 2735 | |
|---|
| 2736 | 2. The heuristic to decide whether to squeeze was a little |
|---|
| 2737 | conservative. It's worth copying 3 words to save an update frame. |
|---|
| 2738 | |
|---|
| 2739 | ] |
|---|
| 2740 | [Some cleanup in TcSimplify.reduceContext |
|---|
| 2741 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080313065220 |
|---|
| 2742 | - Makes this horrid function a bit better - and shorter! |
|---|
| 2743 | - Also gets rid of another API function of TcTyFuns |
|---|
| 2744 | ] |
|---|
| 2745 | [Properly normalise reduced dicts |
|---|
| 2746 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080313051708 |
|---|
| 2747 | - Another chapter in the never-ending TcSimplify.reduceContext saga: after |
|---|
| 2748 | context reduction of wanted dicts it is not sufficient to normalise them |
|---|
| 2749 | wrt to the wanted equalities. We also need to take top-level equalities |
|---|
| 2750 | into account. (In fact, we probably also have to normalise wrt to given |
|---|
| 2751 | equalities, but I have left that open for the moment - but added a TODO |
|---|
| 2752 | note.) |
|---|
| 2753 | - This finally eliminates substEqInDictInsts from TcTyFuns interface and |
|---|
| 2754 | suggest some further possible clean up (which will be in a separate patch). |
|---|
| 2755 | |
|---|
| 2756 | Thanks to Roman for the intricate example that uncovered this bug. |
|---|
| 2757 | ] |
|---|
| 2758 | [Bump mAX_NDP_PROD to 5 |
|---|
| 2759 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080313061411] |
|---|
| 2760 | [#2050: save the GHCi history in ~/.ghc/ghci_history |
|---|
| 2761 | Simon Marlow <simonmar@microsoft.com>**20080312215724 |
|---|
| 2762 | Modified version of Judah's patch |
|---|
| 2763 | ] |
|---|
| 2764 | [Make sure we generate PA dictionaries for tuples up to mAX_NDP_PROD |
|---|
| 2765 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080312034905] |
|---|
| 2766 | [Bump mAX_NDP_PROD to 4 |
|---|
| 2767 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080312030245] |
|---|
| 2768 | [First cut at reviving the External Core tools |
|---|
| 2769 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080310025821 |
|---|
| 2770 | |
|---|
| 2771 | I updated the External Core AST to be somewhat closer to reality (where reality is defined by the HEAD), and got all the code to compile under GHC 6.8.1. (That means it works, right?) |
|---|
| 2772 | |
|---|
| 2773 | Major changes: |
|---|
| 2774 | |
|---|
| 2775 | - Added a Makefile. |
|---|
| 2776 | |
|---|
| 2777 | - Core AST: |
|---|
| 2778 | - Represented package names and qualified module names. |
|---|
| 2779 | - Added type annotation on Case exps. |
|---|
| 2780 | - Changed Coerce to Cast. |
|---|
| 2781 | - Cleaned up representation of qualified/unqualified names. |
|---|
| 2782 | - Fixed up wired-in module names (no more "PrelGHC", etc.) |
|---|
| 2783 | |
|---|
| 2784 | - Updated parser/interpreter/typechecker/prep for the new AST. |
|---|
| 2785 | |
|---|
| 2786 | - Typechecker: |
|---|
| 2787 | - Used a Reader monad to pass around the global environment and top module name. |
|---|
| 2788 | - Added an entry point to check a single expression. |
|---|
| 2789 | |
|---|
| 2790 | - Prep: |
|---|
| 2791 | - Got rid of typeofExp; it's now defined in terms of the typechecker. |
|---|
| 2792 | |
|---|
| 2793 | ] |
|---|
| 2794 | [Remove ndpFlatten |
|---|
| 2795 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080309225914 |
|---|
| 2796 | |
|---|
| 2797 | This patch removes the ndpFlatten directory and the -fflatten static flag. |
|---|
| 2798 | This code has never worked and has now been superceded by vectorisation. |
|---|
| 2799 | ] |
|---|
| 2800 | [documentation fix: change flag -frules-off to -fno-rewrite-rules |
|---|
| 2801 | iavor.diatchki@gmail.com**20080309191911] |
|---|
| 2802 | [Don't expose the unfolding of dictionary selectors without -O |
|---|
| 2803 | simonpj@microsoft.com**20080306135026 |
|---|
| 2804 | |
|---|
| 2805 | When compiling without -O we were getting code like this |
|---|
| 2806 | |
|---|
| 2807 | f x = case GHC.Base.$f20 of |
|---|
| 2808 | :DEq eq neq -> eq x x |
|---|
| 2809 | |
|---|
| 2810 | But because of the -O the $f20 dictionary is not available, so exposing |
|---|
| 2811 | the dictionary selector was useless. Yet it makes the code bigger! |
|---|
| 2812 | Better to get |
|---|
| 2813 | f x = GHC.Base.== GHC.Bsae.$f20 x x |
|---|
| 2814 | |
|---|
| 2815 | This patch suppresses the implicit unfolding for dictionary selectors |
|---|
| 2816 | when compiling without -O. We could do the same for other implicit |
|---|
| 2817 | Ids, but this will do for now. |
|---|
| 2818 | |
|---|
| 2819 | There should be no effect when compiling with -O. Programs should |
|---|
| 2820 | be smaller without -O and may run a tiny bit slower. |
|---|
| 2821 | |
|---|
| 2822 | |
|---|
| 2823 | ] |
|---|
| 2824 | [Fix Trac #783: improve short-cutting literals in the type checker |
|---|
| 2825 | simonpj@microsoft.com**20080306134734 |
|---|
| 2826 | |
|---|
| 2827 | The Inst.shortCutIntLit mechanism in the type checker was missing cases |
|---|
| 2828 | where a floating-point literal was given without an explicit decimal point. |
|---|
| 2829 | |
|---|
| 2830 | As a result, programs with lots of floating-point literals (without decimals) |
|---|
| 2831 | ended up with massive Static Reference Tables. This is not cool. See |
|---|
| 2832 | comments with Trac #783 for details. |
|---|
| 2833 | |
|---|
| 2834 | |
|---|
| 2835 | ] |
|---|
| 2836 | [Fix Trac #2138: print the 'stupid theta' of a data type |
|---|
| 2837 | simonpj@microsoft.com**20080306134651] |
|---|
| 2838 | [Fix vectorisation monad |
|---|
| 2839 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080307050859] |
|---|
| 2840 | [Improve SpecConstr for local bindings: seed specialisation from the calls |
|---|
| 2841 | simonpj@microsoft.com**20080306120004 |
|---|
| 2842 | |
|---|
| 2843 | This patch makes a significant improvement to SpecConstr, based on |
|---|
| 2844 | Roman's experience with using it for stream fusion. The main change is |
|---|
| 2845 | this: |
|---|
| 2846 | |
|---|
| 2847 | * For local (not-top-level) declarations, seed the specialisation |
|---|
| 2848 | loop from the calls in the body of the 'let'. |
|---|
| 2849 | |
|---|
| 2850 | See Note [Local recursive groups] for discussion and example. Top-level |
|---|
| 2851 | declarations are treated just as before. |
|---|
| 2852 | |
|---|
| 2853 | Other changes in this patch: |
|---|
| 2854 | |
|---|
| 2855 | * New flag -fspec-constr-count=N sets the maximum number of specialisations |
|---|
| 2856 | for any single function to N. -fno-spec-constr-count removes the limit. |
|---|
| 2857 | |
|---|
| 2858 | * Refactoring in specLoop and friends; new algebraic data types |
|---|
| 2859 | OneSpec and SpecInfo instead of the tuples that were there before |
|---|
| 2860 | |
|---|
| 2861 | * Be less keen to specialise on variables that are simply in scope. |
|---|
| 2862 | Example |
|---|
| 2863 | f p q = letrec g a y = ...g.... in g q p |
|---|
| 2864 | We probably do not want to specialise 'g' for calls with exactly |
|---|
| 2865 | the arguments 'q' and 'p', since we know nothing about them. |
|---|
| 2866 | |
|---|
| 2867 | |
|---|
| 2868 | ] |
|---|
| 2869 | [Refactor OccAnal; and improve dead-code elimination |
|---|
| 2870 | simonpj@microsoft.com**20080305155708 |
|---|
| 2871 | |
|---|
| 2872 | The occurrence analyer is now really rather subtle when dealing |
|---|
| 2873 | with recursive groups; see Note [Loop breaking and RULES] especially. |
|---|
| 2874 | |
|---|
| 2875 | This patch refactors this code a bit, notably |
|---|
| 2876 | * Introduces a new data type Details instead of a tuple |
|---|
| 2877 | |
|---|
| 2878 | * More clearly breaks up a recursive group into its SCCs |
|---|
| 2879 | before processing it in a separate function occAnalRec |
|---|
| 2880 | |
|---|
| 2881 | * As a result, does better dead-code elimination, becuause it's |
|---|
| 2882 | done per SCC rather than for the whole Rec |
|---|
| 2883 | |
|---|
| 2884 | |
|---|
| 2885 | |
|---|
| 2886 | |
|---|
| 2887 | ] |
|---|
| 2888 | [Copy the right ghc-pkg.bin into bindists |
|---|
| 2889 | Ian Lynagh <igloo@earth.li>**20080305224020] |
|---|
| 2890 | [Add a missing endif to the bindist Makefile |
|---|
| 2891 | Ian Lynagh <igloo@earth.li>**20080305221136] |
|---|
| 2892 | [Fix bashisms; patch from Bernie Pope |
|---|
| 2893 | Ian Lynagh <igloo@earth.li>**20080305134556] |
|---|
| 2894 | [Improve no-type-signature warning |
|---|
| 2895 | Ian Lynagh <igloo@earth.li>**20080305011242 |
|---|
| 2896 | Instead of |
|---|
| 2897 | Warning: Definition but no type signature for `.+.' |
|---|
| 2898 | Inferred type: .+. :: forall a. a |
|---|
| 2899 | we now say |
|---|
| 2900 | Warning: Definition but no type signature for `.+.' |
|---|
| 2901 | Inferred type: (.+.) :: forall a. a |
|---|
| 2902 | ] |
|---|
| 2903 | [Fix typo |
|---|
| 2904 | Ian Lynagh <igloo@earth.li>**20080302151339] |
|---|
| 2905 | [In bindists, look in the right place to see if we have provided docs |
|---|
| 2906 | Ian Lynagh <igloo@earth.li>**20080302140408 |
|---|
| 2907 | Fixes trac #1971: unjustified warning about documentation |
|---|
| 2908 | ] |
|---|
| 2909 | [Remove GADT refinements, part 3 |
|---|
| 2910 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080229035740] |
|---|
| 2911 | [MacOS installer: Uninstaller must be able to deal with ATiger receipts |
|---|
| 2912 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080228050707] |
|---|
| 2913 | [Add and use seqBitmap when constructing SRTs |
|---|
| 2914 | Ian Lynagh <igloo@earth.li>**20080227144505 |
|---|
| 2915 | This roughly halves memory usage when compiling |
|---|
| 2916 | module Foo where |
|---|
| 2917 | |
|---|
| 2918 | foo :: Double -> Int |
|---|
| 2919 | foo x | x == 1 = 1 |
|---|
| 2920 | ... |
|---|
| 2921 | foo x | x == 500 = 500 |
|---|
| 2922 | without optimisation. |
|---|
| 2923 | ] |
|---|
| 2924 | [Whitespace |
|---|
| 2925 | Ian Lynagh <igloo@earth.li>**20080220191230] |
|---|
| 2926 | [Remove GADT refinements, part 2 |
|---|
| 2927 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080228055326] |
|---|
| 2928 | [Fix Trac #2130: improve derived Ord for primmitive types |
|---|
| 2929 | simonpj@microsoft.com**20080228121106 |
|---|
| 2930 | |
|---|
| 2931 | This patch does two things: |
|---|
| 2932 | |
|---|
| 2933 | * (Minor): in TcGenDeriv.careful_compare_Case, test for less-than before |
|---|
| 2934 | equality. This should reduce the number of dynamic tests, and also gives |
|---|
| 2935 | more scope for optimisation, since less-than tells us more than equality. |
|---|
| 2936 | |
|---|
| 2937 | * (More important): add special-case derived code for data types that are |
|---|
| 2938 | simple wrappers of primitive types. See |
|---|
| 2939 | Note [Comparision of primitive types] |
|---|
| 2940 | This fixes Trac 2130. |
|---|
| 2941 | |
|---|
| 2942 | However see also Trac #2132, which is not addressed here. |
|---|
| 2943 | |
|---|
| 2944 | ] |
|---|
| 2945 | [Comments only |
|---|
| 2946 | simonpj@microsoft.com**20080228111301] |
|---|
| 2947 | [add a note about SMP execution not being supported with profiling |
|---|
| 2948 | Simon Marlow <simonmar@microsoft.com>**20080228112209] |
|---|
| 2949 | [Enable -prof -threaded (#886) |
|---|
| 2950 | Simon Marlow <simonmar@microsoft.com>**20080228111631 |
|---|
| 2951 | It turns out that -prof -threaded works (modulo some small changes), |
|---|
| 2952 | because all the data structures used in profiling are only accessed by |
|---|
| 2953 | one thread at a time, at long as we don't use +RTS -N2 or higher. So |
|---|
| 2954 | this patch enables the use of -prof -threaded, but an error is given |
|---|
| 2955 | if you ask for more than one CPU with +RTS -N. |
|---|
| 2956 | ] |
|---|
| 2957 | [Wibble to error message (stmt of do block or comprehension) |
|---|
| 2958 | simonpj@microsoft.com**20080228083104] |
|---|
| 2959 | [Make explicit lists more fusable |
|---|
| 2960 | Max Bolingbroke <batterseapower@hotmail.com>**20080228083050] |
|---|
| 2961 | [Add comments explaining flags |
|---|
| 2962 | simonpj@microsoft.com**20080228082935] |
|---|
| 2963 | [Remove GADT refinements, part 1 |
|---|
| 2964 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080228045351 |
|---|
| 2965 | - A while ago, I changed the type checker to use equality constraints together |
|---|
| 2966 | with implication constraints to track local type refinement due to GADT |
|---|
| 2967 | pattern matching. This patch is the first of a number of surgical strikes |
|---|
| 2968 | to remove the resulting dead code of the previous GADT refinement machinery. |
|---|
| 2969 | |
|---|
| 2970 | Hurray to code simplification! |
|---|
| 2971 | ] |
|---|
| 2972 | [Eliminate SkolemOccurs skolems only after checkLoop reached a fixed point |
|---|
| 2973 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080228001957 |
|---|
| 2974 | - See test case indexed-types/should_fail/SkolemOccursLoop, which sends the |
|---|
| 2975 | type checker into an endless loop without this fix |
|---|
| 2976 | ] |
|---|
| 2977 | [Fix Trac #2126: re-order tests (easy) |
|---|
| 2978 | simonpj@microsoft.com**20080227163202] |
|---|
| 2979 | [Fix Trac #2111: improve error handling for 'rec' in do-notation |
|---|
| 2980 | simonpj@microsoft.com**20080226175635 |
|---|
| 2981 | |
|---|
| 2982 | We were not dealing correctly with all the combinations of |
|---|
| 2983 | do notation |
|---|
| 2984 | mdo notation |
|---|
| 2985 | arrow notation |
|---|
| 2986 | in combination with 'rec' Stmts. |
|---|
| 2987 | |
|---|
| 2988 | I think this patch sorts it out. |
|---|
| 2989 | |
|---|
| 2990 | ] |
|---|
| 2991 | [Remove gaw comment |
|---|
| 2992 | simonpj@microsoft.com**20080226175305] |
|---|
| 2993 | [Fix Trac #1899; missing equality check in typechecker's constraint simplifier |
|---|
| 2994 | simonpj@microsoft.com**20080226174743 |
|---|
| 2995 | |
|---|
| 2996 | This patch fixes a missing equality check (uifying type variable b=b) in |
|---|
| 2997 | the new constraint simplifier in TcTyFuns. As it stands, we were making |
|---|
| 2998 | 'b' point to itself, which subsequently led to an infinite loop when |
|---|
| 2999 | zonking. Test is T1899.hs |
|---|
| 3000 | |
|---|
| 3001 | |
|---|
| 3002 | |
|---|
| 3003 | ] |
|---|
| 3004 | [FIX #2122: file locking bug |
|---|
| 3005 | Simon Marlow <simonmar@microsoft.com>**20080226104650 |
|---|
| 3006 | Second and subsequent readers weren't being inserted into the |
|---|
| 3007 | fd->lock hash table, which meant that the file wasn't correctly |
|---|
| 3008 | unlocked when the Handles were closed. |
|---|
| 3009 | ] |
|---|
| 3010 | [documentation improvements from Frederik Eaton |
|---|
| 3011 | Simon Marlow <simonmar@microsoft.com>**20080226102612] |
|---|
| 3012 | [markup fix |
|---|
| 3013 | Simon Marlow <simonmar@microsoft.com>**20080226102558] |
|---|
| 3014 | [Mac installer: cross-compile for 10.4 |
|---|
| 3015 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080225093734] |
|---|
| 3016 | [Make UniqFM non-strict again while we work out what we're doing. |
|---|
| 3017 | Ian Lynagh <igloo@earth.li>**20080225171305 |
|---|
| 3018 | This "fixes" the very-slow problem we have when compiling dictionaries. |
|---|
| 3019 | ] |
|---|
| 3020 | [Fix Trac #2082 |
|---|
| 3021 | simonpj@microsoft.com**20080219173410] |
|---|
| 3022 | [Fix Trac #2114: error reporting for 'forall' without appropriate flags |
|---|
| 3023 | simonpj@microsoft.com**20080222182646] |
|---|
| 3024 | [Improve error messages from type-checking data constructors |
|---|
| 3025 | simonpj@microsoft.com**20080222182514 |
|---|
| 3026 | |
|---|
| 3027 | This addresses Trac #2112 |
|---|
| 3028 | |
|---|
| 3029 | ] |
|---|
| 3030 | [Add type sigs and minor refactoring |
|---|
| 3031 | simonpj@microsoft.com**20080222182305] |
|---|
| 3032 | [FIX #2073: Don't add empty lines to GHCI's history |
|---|
| 3033 | Ian Lynagh <igloo@earth.li>**20080224143256] |
|---|
| 3034 | [FIX #1977: Check to see if $(bindir) is in the path |
|---|
| 3035 | Ian Lynagh <igloo@earth.li>**20080224134334 |
|---|
| 3036 | Before telling the user to add it, when installing a bindist, check to |
|---|
| 3037 | see if $(bindir) is already in the path. |
|---|
| 3038 | ] |
|---|
| 3039 | [Fix warnings in Simplify |
|---|
| 3040 | Ian Lynagh <igloo@earth.li>**20080222150318] |
|---|
| 3041 | [Whitespace |
|---|
| 3042 | Ian Lynagh <igloo@earth.li>**20080222140755] |
|---|
| 3043 | [Add a comment |
|---|
| 3044 | Ian Lynagh <igloo@earth.li>**20080220205844] |
|---|
| 3045 | [Fix most of the warnings in StgLint |
|---|
| 3046 | Ian Lynagh <igloo@earth.li>**20080220171858] |
|---|
| 3047 | [Whitespace |
|---|
| 3048 | Ian Lynagh <igloo@earth.li>**20080220171140] |
|---|
| 3049 | [CprAnalyse is warning-free |
|---|
| 3050 | Ian Lynagh <igloo@earth.li>**20080220170843] |
|---|
| 3051 | [Whitespace |
|---|
| 3052 | Ian Lynagh <igloo@earth.li>**20080220170650] |
|---|
| 3053 | [Fix #1984: missing context switches |
|---|
| 3054 | Simon Marlow <simonmar@microsoft.com>**20080219102212] |
|---|
| 3055 | [fix unregisterised stage 2 build |
|---|
| 3056 | Simon Marlow <simonmar@microsoft.com>**20080219093407] |
|---|
| 3057 | [Mac OS X deployment target: piping opts through Makefiles |
|---|
| 3058 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080221224449] |
|---|
| 3059 | [Rewrite fixTvSubstEnv so it iteratively applies its substition |
|---|
| 3060 | Ian Lynagh <igloo@earth.li>**20080220153752 |
|---|
| 3061 | This fixes a stack overflow when using strict UniqFMs. It might be |
|---|
| 3062 | possible to rewrite it more efficiently, or to avoid needing it in the |
|---|
| 3063 | first place. |
|---|
| 3064 | ] |
|---|
| 3065 | [Typo |
|---|
| 3066 | Ian Lynagh <igloo@earth.li>**20080219204117] |
|---|
| 3067 | [Make some more modules use LazyUniqFM instead of UniqFM |
|---|
| 3068 | Ian Lynagh <igloo@earth.li>*-20080207015714 |
|---|
| 3069 | If these modules use UniqFM then we get a stack overflow when compiling |
|---|
| 3070 | modules that use fundeps. I haven't tracked down the actual cause. |
|---|
| 3071 | ] |
|---|
| 3072 | [Add configure option --with-macos-deployment-target |
|---|
| 3073 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080219031755] |
|---|
| 3074 | [Fix warning in SCCfinal |
|---|
| 3075 | Ian Lynagh <igloo@earth.li>**20080219020429] |
|---|
| 3076 | [Whitespace only |
|---|
| 3077 | Ian Lynagh <igloo@earth.li>**20080219015259] |
|---|
| 3078 | [Fix warnings in UniqSupply |
|---|
| 3079 | Ian Lynagh <igloo@earth.li>**20080219013233] |
|---|
| 3080 | [Whitespace only |
|---|
| 3081 | Ian Lynagh <igloo@earth.li>**20080219012417] |
|---|
| 3082 | [Fix non-missing-signature warnings in MkId |
|---|
| 3083 | Ian Lynagh <igloo@earth.li>**20080219010917] |
|---|
| 3084 | [Whitespace only |
|---|
| 3085 | Ian Lynagh <igloo@earth.li>**20080219005042] |
|---|
| 3086 | [Whitespace only |
|---|
| 3087 | Ian Lynagh <igloo@earth.li>**20080218234559] |
|---|
| 3088 | [Make literals in the syntax tree strict |
|---|
| 3089 | Ian Lynagh <igloo@earth.li>**20080218183424] |
|---|
| 3090 | [Make the parser a bit stricter |
|---|
| 3091 | Ian Lynagh <igloo@earth.li>**20080218175514] |
|---|
| 3092 | [seq what we actually want to seq, not the seq'ing function |
|---|
| 3093 | Ian Lynagh <igloo@earth.li>**20080213131857] |
|---|
| 3094 | [attempt to fix #2098 (PPC pepple please test & fix) |
|---|
| 3095 | Simon Marlow <simonmar@microsoft.com>**20080218115748] |
|---|
| 3096 | [FIX #2023: substitute for $topdir in haddockInterfaces and haddockHTMLs |
|---|
| 3097 | Simon Marlow <simonmar@microsoft.com>**20080209143648] |
|---|
| 3098 | [All installed Haskell prgms have an inplace and an installed version |
|---|
| 3099 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080218061809 |
|---|
| 3100 | - GHC installs a range of compiled Haskell programs in addition to the actual |
|---|
| 3101 | compiler. To ensure that they all run on the platform targeted by the build |
|---|
| 3102 | (which may have different libraries installed than the build host), we need |
|---|
| 3103 | to make sure that all compiled Haskell code going into an install is build |
|---|
| 3104 | with the stage 1 compiler, not the bootstrap compiler. Getting this right |
|---|
| 3105 | is especially important on the Mac to enable builds that work on Mac OS X |
|---|
| 3106 | versions that are older than the one performing the build. |
|---|
| 3107 | - For all installed utils implemented in Haskell (i.e., ghc-pkg, hasktags, |
|---|
| 3108 | hsc2hs, runghc, hpc, and pwd) we compile two versions, an inplace version |
|---|
| 3109 | and a version for installation. The former is build by the bootstrap |
|---|
| 3110 | compiler during the stage 1 build and the latter is build by the stage 1 |
|---|
| 3111 | compiler during the stage 2 build. |
|---|
| 3112 | - This is really very much as the setup for ghc itself, only that we don't use |
|---|
| 3113 | separate stage1/ and stage2/ build directories. Instead, we clean before |
|---|
| 3114 | each build. CAVEAT: This only works properly if invoked from the |
|---|
| 3115 | toplevel Makefile. |
|---|
| 3116 | - Instead of UseStage1=YES (as used by the previous binary-dist-specific |
|---|
| 3117 | recompilation), we now use the same $(stage) variables as used for the |
|---|
| 3118 | compiler proper - to increase uniformity and to avoid extra conditionals for |
|---|
| 3119 | the install target. |
|---|
| 3120 | ] |
|---|
| 3121 | [Fix warnings in Pretty |
|---|
| 3122 | Ian Lynagh <igloo@earth.li>**20080218214151] |
|---|
| 3123 | [Fix warnings in FiniteMap |
|---|
| 3124 | Ian Lynagh <igloo@earth.li>**20080218200408] |
|---|
| 3125 | [Fix warnings in Binary |
|---|
| 3126 | Ian Lynagh <igloo@earth.li>**20080218193645] |
|---|
| 3127 | [Fix warnings in StringBuffer |
|---|
| 3128 | Ian Lynagh <igloo@earth.li>**20080218191846] |
|---|
| 3129 | [Fix warnings in IOEnv |
|---|
| 3130 | Ian Lynagh <igloo@earth.li>**20080218190849] |
|---|
| 3131 | [Fix warnings in FastString, and check for empty case in head/tail |
|---|
| 3132 | Ian Lynagh <igloo@earth.li>**20080218144707] |
|---|
| 3133 | [Whitespace only |
|---|
| 3134 | Ian Lynagh <igloo@earth.li>**20080218112232] |
|---|
| 3135 | [Whitespace only |
|---|
| 3136 | Ian Lynagh <igloo@earth.li>**20080218112101] |
|---|
| 3137 | [Whitespace only |
|---|
| 3138 | Ian Lynagh <igloo@earth.li>**20080218111941] |
|---|
| 3139 | [Whitespace only |
|---|
| 3140 | Ian Lynagh <igloo@earth.li>**20080218110241] |
|---|
| 3141 | [Whitespace only |
|---|
| 3142 | Ian Lynagh <igloo@earth.li>**20080218105909] |
|---|
| 3143 | [Whitespace only |
|---|
| 3144 | Ian Lynagh <igloo@earth.li>**20080218105343] |
|---|
| 3145 | [Tweak whitespace |
|---|
| 3146 | Ian Lynagh <igloo@earth.li>**20080217175133] |
|---|
| 3147 | [Fix typo |
|---|
| 3148 | Ian Lynagh <igloo@earth.li>**20080217175021] |
|---|
| 3149 | [Print better error message for reading External Core |
|---|
| 3150 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080217223844 |
|---|
| 3151 | |
|---|
| 3152 | GHC panicked with a "Prelude.undefined" error message if you tried to |
|---|
| 3153 | compile a .hcr file. Since support for reading ExternalCore simply does |
|---|
| 3154 | not exist, I added an error message to say that. |
|---|
| 3155 | |
|---|
| 3156 | Please merge to 6.8. Thanks. |
|---|
| 3157 | |
|---|
| 3158 | ] |
|---|
| 3159 | [Documentation only: update External Core section of user guide |
|---|
| 3160 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080217213206 |
|---|
| 3161 | |
|---|
| 3162 | I updated the External Core section of the user guide, mostly to reflect |
|---|
| 3163 | that the input path is broken and there are no firm plans to fix it. |
|---|
| 3164 | ] |
|---|
| 3165 | [Generate foo(void) rather than foo() in FFI stub files |
|---|
| 3166 | Ian Lynagh <igloo@earth.li>**20080216141031 |
|---|
| 3167 | -Wstrict-prototypes warns about the latter. |
|---|
| 3168 | Patch from pcc in trac #2100. |
|---|
| 3169 | ] |
|---|
| 3170 | [Make hasktags -Wall clean |
|---|
| 3171 | Ian Lynagh <igloo@earth.li>**20080215160309] |
|---|
| 3172 | [Whitespace only |
|---|
| 3173 | Ian Lynagh <igloo@earth.li>**20080215155122] |
|---|
| 3174 | [Fix building hasktags |
|---|
| 3175 | Ian Lynagh <igloo@earth.li>**20080215154415] |
|---|
| 3176 | [Revert an accidental comment change |
|---|
| 3177 | Ian Lynagh <igloo@earth.li>**20080215153558] |
|---|
| 3178 | [find module names, fix for get constructor names, find class names as well, sort ctag files |
|---|
| 3179 | marco-oweber@gmx.de**20080212232157] |
|---|
| 3180 | [added TODO item and link to alternatives on wiki |
|---|
| 3181 | marco-oweber@gmx.de**20080212231853] |
|---|
| 3182 | [Make more arch-specific #if's exclusive with #else #error cases |
|---|
| 3183 | Duncan Coutts <duncan@haskell.org>**20080207170020 |
|---|
| 3184 | So when the next person compiles the Sparc NCG it should fail more |
|---|
| 3185 | obviously at compile time rather than panicing at runtime. |
|---|
| 3186 | Plus one obvious fix for LocalReg gaining an extra param |
|---|
| 3187 | Missing bits of Sparc NCG: |
|---|
| 3188 | * genSwitch for generating jump tables. This is the most tricky one. |
|---|
| 3189 | * ALLOCATABLE_REGS_INTEGER and ALLOCATABLE_REGS_DOUBLE just requires |
|---|
| 3190 | finding and verifying the values. The nearby comment describes how. |
|---|
| 3191 | * isRegRegMove and mkRegRegMoveInstr. Sparc uses Or for int move, check |
|---|
| 3192 | what this is supposed to do for single and double float types. |
|---|
| 3193 | * regDotColor. Probably just copy the ppc impl. |
|---|
| 3194 | ] |
|---|
| 3195 | [Document code a bit better |
|---|
| 3196 | Ian Lynagh <igloo@earth.li>**20080213161106] |
|---|
| 3197 | [Add a necessary [] error case |
|---|
| 3198 | Ian Lynagh <igloo@earth.li>**20080213154232] |
|---|
| 3199 | [\e -> f e ===> f |
|---|
| 3200 | Ian Lynagh <igloo@earth.li>**20080213153835] |
|---|
| 3201 | [Fixed warnings in parser/Lexer.x |
|---|
| 3202 | Twan van Laarhoven <twanvl@gmail.com>**20080204021131 |
|---|
| 3203 | |
|---|
| 3204 | The -w flag can not be removed, because alex also generates code with lots of warnings. |
|---|
| 3205 | ] |
|---|
| 3206 | [Monadification and Fixed warnings in parser/RdrHsSyn, except for incomplete pattern matches |
|---|
| 3207 | Twan van Laarhoven <twanvl@gmail.com>**20080204015053] |
|---|
| 3208 | [Fixed warnings in vectorise/VectMonad |
|---|
| 3209 | Twan van Laarhoven <twanvl@gmail.com>**20080203223932] |
|---|
| 3210 | [Fix typo in message |
|---|
| 3211 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080212052219] |
|---|
| 3212 | [Remove old code to get TMPDIR, use System.Directory.getTemporaryDirectory |
|---|
| 3213 | Simon Marlow <simonmar@microsoft.com>**20080207143915] |
|---|
| 3214 | [Mac installer: Added XCODE_EXTRA_CONFIGURE_ARGS |
|---|
| 3215 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211115201] |
|---|
| 3216 | [Mac installer: make Uninstaller a bit more robust |
|---|
| 3217 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211091119] |
|---|
| 3218 | [Mac installer: add comprehensive licencing information |
|---|
| 3219 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211061450] |
|---|
| 3220 | [Force -s on ar in xcode builds |
|---|
| 3221 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211022329] |
|---|
| 3222 | [Fix warning (FIX validate) |
|---|
| 3223 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080211040211] |
|---|
| 3224 | [Symbolic tags for simplifier phases |
|---|
| 3225 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080211032350 |
|---|
| 3226 | |
|---|
| 3227 | Every simplifier phase can have an arbitrary number of tags and multiple |
|---|
| 3228 | phases can share the same tags. The tags can be used as arguments to |
|---|
| 3229 | -ddump-simpl-phases to specify which phases are to be dumped. |
|---|
| 3230 | For instance, -ddump-simpl-phases=main will dump the output of phases 2, 1 and |
|---|
| 3231 | 0 of the initial simplifier run (they all share the "main" tag) while |
|---|
| 3232 | -ddump-simpl-phases=main:0 will dump only the output of phase 0 of that run. |
|---|
| 3233 | |
|---|
| 3234 | At the moment, the supported tags are: |
|---|
| 3235 | |
|---|
| 3236 | main The main, staged simplifier run (before strictness) |
|---|
| 3237 | post-worker-wrapper After the w/w split |
|---|
| 3238 | post-liberate-case After LiberateCase |
|---|
| 3239 | final Final clean-up run |
|---|
| 3240 | |
|---|
| 3241 | The names are somewhat arbitrary and will change in the future. |
|---|
| 3242 | ] |
|---|
| 3243 | [Allow -ddump-simpl-phases to specify which phases to dump |
|---|
| 3244 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080211020630 |
|---|
| 3245 | |
|---|
| 3246 | We can now say -ddump-simpl-phases=1,2 to dump only these two phases and |
|---|
| 3247 | nothing else. |
|---|
| 3248 | ] |
|---|
| 3249 | [Fixed warnings in parser/ParserCoreUtils |
|---|
| 3250 | Twan van Laarhoven <twanvl@gmail.com>**20080204022226] |
|---|
| 3251 | [Fixed warnings in hsSyn/Convert, except for incomplete pattern matches |
|---|
| 3252 | Twan van Laarhoven <twanvl@gmail.com>**20080204000510] |
|---|
| 3253 | [Fixed warnings in types/Unify |
|---|
| 3254 | Twan van Laarhoven <twanvl@gmail.com>**20080203224228] |
|---|
| 3255 | [Fixed warnings in ndpFlatten/FlattenInfo |
|---|
| 3256 | Twan van Laarhoven <twanvl@gmail.com>**20080203224159] |
|---|
| 3257 | [Fixed warnings in vectorise/VectBuiltIn |
|---|
| 3258 | Twan van Laarhoven <twanvl@gmail.com>**20080203224043] |
|---|
| 3259 | [Fixed warnings in vectorise/VectCore |
|---|
| 3260 | Twan van Laarhoven <twanvl@gmail.com>**20080203224003] |
|---|
| 3261 | [Fixed warnings in deSugar/DsExpr, except for incomplete pattern matches |
|---|
| 3262 | Twan van Laarhoven <twanvl@gmail.com>**20080203214848] |
|---|
| 3263 | [Fixed warnings in deSugar/DsGRHSs, except for incomplete pattern matches |
|---|
| 3264 | Twan van Laarhoven <twanvl@gmail.com>**20080203214602] |
|---|
| 3265 | [Fixed warnings in deSugar/DsListComp, except for incomplete pattern matches |
|---|
| 3266 | Twan van Laarhoven <twanvl@gmail.com>**20080203211253] |
|---|
| 3267 | [Fixed warnings in deSugar/Check, except for incomplete pattern matches |
|---|
| 3268 | Twan van Laarhoven <twanvl@gmail.com>**20080203210814] |
|---|
| 3269 | [Fixed warnings in deSugar/Match, except for incomplete pattern matches |
|---|
| 3270 | Twan van Laarhoven <twanvl@gmail.com>**20080203210533] |
|---|
| 3271 | [Fixed warnings in deSugar/MatchCon, except for incomplete pattern matches |
|---|
| 3272 | Twan van Laarhoven <twanvl@gmail.com>**20080203210402] |
|---|
| 3273 | [Fixed warnings in deSugar/DsMonad |
|---|
| 3274 | Twan van Laarhoven <twanvl@gmail.com>**20080203210339] |
|---|
| 3275 | [Wibble the Makefile: DQ, \" and '"' |
|---|
| 3276 | Ian Lynagh <igloo@earth.li>**20080210171104] |
|---|
| 3277 | [Don't use -w when compiling Config.hs |
|---|
| 3278 | Ian Lynagh <igloo@earth.li>**20080210171050] |
|---|
| 3279 | [Add typesigs to Config.hs |
|---|
| 3280 | Ian Lynagh <igloo@earth.li>**20080210170925] |
|---|
| 3281 | [Allow skipping "make clean" or only re-running the testsuite in validate |
|---|
| 3282 | Ian Lynagh <igloo@earth.li>**20080210162842] |
|---|
| 3283 | [Mac installer: added support for full docs |
|---|
| 3284 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080209110727] |
|---|
| 3285 | [Fixed permissions and other cleanup in Mac installer package |
|---|
| 3286 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080207030528] |
|---|
| 3287 | [Adjust error message (Trac #2079) |
|---|
| 3288 | simonpj@microsoft.com**20080207171622] |
|---|
| 3289 | [Redo inlining patch, plus some tidying up |
|---|
| 3290 | simonpj@microsoft.com**20080207155102 |
|---|
| 3291 | |
|---|
| 3292 | This adds back in the patch |
|---|
| 3293 | * UNDO: Be a little keener to inline |
|---|
| 3294 | |
|---|
| 3295 | It originally broke the compiler because it tickled a Cmm optimisation bug, |
|---|
| 3296 | now fixed. |
|---|
| 3297 | |
|---|
| 3298 | In revisiting this I have also make inlining a bit cleverer, in response to |
|---|
| 3299 | more examples from Roman. In particular |
|---|
| 3300 | |
|---|
| 3301 | * CoreUnfold.CallCtxt is a data type that tells something about |
|---|
| 3302 | the context of a call. The new feature is that if the context is |
|---|
| 3303 | the argument position of a function call, we record both |
|---|
| 3304 | - whether the function (or some higher up function) has rules |
|---|
| 3305 | - what the argument discount in that position is |
|---|
| 3306 | Either of these make functions keener to inline, even if it's |
|---|
| 3307 | in a lazy position |
|---|
| 3308 | |
|---|
| 3309 | * There was conseqential tidying up on the data type of CallCont. |
|---|
| 3310 | In particular I got rid of the now-unused LetRhsFlag |
|---|
| 3311 | |
|---|
| 3312 | |
|---|
| 3313 | |
|---|
| 3314 | ] |
|---|
| 3315 | [Comments, and a type signature |
|---|
| 3316 | simonpj@microsoft.com**20080125174203] |
|---|
| 3317 | [FIX #2080: an optimisation to remove a widening was wrong |
|---|
| 3318 | Simon Marlow <simonmar@microsoft.com>**20080208124219] |
|---|
| 3319 | [Remove some of the old compat stuff now that we assume GHC 6.4 |
|---|
| 3320 | Simon Marlow <simonmar@microsoft.com>**20080208124132] |
|---|
| 3321 | [Allow runghc to take input from stdin, just like Ruby & Python |
|---|
| 3322 | Simon Marlow <simonmar@microsoft.com>**20080207145830] |
|---|
| 3323 | [remove a bogus assertion |
|---|
| 3324 | Simon Marlow <simonmar@microsoft.com>**20080207143805] |
|---|
| 3325 | [Convert more UniqFM's back to LazyUniqFM's |
|---|
| 3326 | Ian Lynagh <igloo@earth.li>**20080207144736 |
|---|
| 3327 | These fix these failures: |
|---|
| 3328 | break008(ghci) |
|---|
| 3329 | break009(ghci) |
|---|
| 3330 | break026(ghci) |
|---|
| 3331 | ghci.prog009(ghci) |
|---|
| 3332 | ghci025(ghci) |
|---|
| 3333 | print007(ghci) |
|---|
| 3334 | prog001(ghci) |
|---|
| 3335 | prog002(ghci) |
|---|
| 3336 | prog003(ghci) |
|---|
| 3337 | at least some of which have this symptom: |
|---|
| 3338 | Exception: expectJust prune |
|---|
| 3339 | ] |
|---|
| 3340 | [Be a bit more consistent about what's a set and what's a map |
|---|
| 3341 | Ian Lynagh <igloo@earth.li>**20080205211909] |
|---|
| 3342 | [Make some more modules use LazyUniqFM instead of UniqFM |
|---|
| 3343 | Ian Lynagh <igloo@earth.li>**20080207015714 |
|---|
| 3344 | If these modules use UniqFM then we get a stack overflow when compiling |
|---|
| 3345 | modules that use fundeps. I haven't tracked down the actual cause. |
|---|
| 3346 | ] |
|---|
| 3347 | [Remove unused import |
|---|
| 3348 | Ian Lynagh <igloo@earth.li>**20080207002544] |
|---|
| 3349 | [Make UniqFM strict in its elements |
|---|
| 3350 | Ian Lynagh <igloo@earth.li>**20080206141620] |
|---|
| 3351 | [Use uniqSetToList rather than eltsUFM |
|---|
| 3352 | Ian Lynagh <igloo@earth.li>**20080206000043] |
|---|
| 3353 | [Use isEmptyUniqSet rather than isNullUFM |
|---|
| 3354 | Ian Lynagh <igloo@earth.li>**20080205205336] |
|---|
| 3355 | [Added Uninstaller |
|---|
| 3356 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080206073054] |
|---|
| 3357 | [FIX BUILD on x86_64 |
|---|
| 3358 | Simon Marlow <simonmar@microsoft.com>**20080206113936] |
|---|
| 3359 | [matchesPkg: match against the pkg Id (foo-1.0) not just the package name (foo) |
|---|
| 3360 | Simon Marlow <simonmar@microsoft.com>**20080205090429 |
|---|
| 3361 | Fixes the ghcpkg01 test. |
|---|
| 3362 | ] |
|---|
| 3363 | [Teach cheapEqExpr about casts |
|---|
| 3364 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080206035007 |
|---|
| 3365 | |
|---|
| 3366 | Previously, cheapEqExpr would always return False if it encountered a cast. |
|---|
| 3367 | This was bad for two reasons. Firstly, CSE (which uses cheapEqExpr to compare |
|---|
| 3368 | expressions) never eliminated expressions which contained casts and secondly, |
|---|
| 3369 | it was inconsistent with exprIsBig. This patch fixes this. |
|---|
| 3370 | ] |
|---|
| 3371 | [Inject implicit bindings before the simplifier (Trac #2070) |
|---|
| 3372 | simonpj@microsoft.com**20080205165507 |
|---|
| 3373 | |
|---|
| 3374 | With constructor unpacking, it's possible for constructors and record |
|---|
| 3375 | selectors to have non-trivial code, which should be optimised before |
|---|
| 3376 | being fed to the code generator. Example: |
|---|
| 3377 | |
|---|
| 3378 | data Foo = Foo { get :: {-# UNPACK #-} !Int } |
|---|
| 3379 | |
|---|
| 3380 | Then we do not want to get this: |
|---|
| 3381 | T2070.get = |
|---|
| 3382 | \ (tpl_B1 :: T2070.Foo) -> |
|---|
| 3383 | case tpl_B1 of tpl1_B2 { T2070.Foo rb_B4 -> |
|---|
| 3384 | let { |
|---|
| 3385 | ipv_B3 [Just S] :: GHC.Base.Int |
|---|
| 3386 | [Str: DmdType m] |
|---|
| 3387 | ipv_B3 = GHC.Base.I# rb_B4 |
|---|
| 3388 | } in ipv_B3 } |
|---|
| 3389 | |
|---|
| 3390 | If this goes through to codegen, we'll generate bad code. Admittedly, |
|---|
| 3391 | this only matters when the selector is used in a curried way (e.g |
|---|
| 3392 | map get xs), but nevertheless it's silly. |
|---|
| 3393 | |
|---|
| 3394 | This patch injects the implicit bindings in SimplCore, before the |
|---|
| 3395 | simplifier runs. That slows the simplifier a little, because it has |
|---|
| 3396 | to look at some extra bindings; but it's probably a slight effect. |
|---|
| 3397 | If it turns out to matter I suppose we can always inject them later, |
|---|
| 3398 | e.g. just before the final simplification. |
|---|
| 3399 | |
|---|
| 3400 | An unexpected (to me) consequence is that we get some specialisation rules |
|---|
| 3401 | for class-method selectors. E.g. we get a rule |
|---|
| 3402 | RULE (==) Int dInt = eqInt |
|---|
| 3403 | There's no harm in this, but not much benefit either, because the |
|---|
| 3404 | same result will happen when we inline (==) and dInt, but it's perhaps |
|---|
| 3405 | more direct. |
|---|
| 3406 | |
|---|
| 3407 | |
|---|
| 3408 | ] |
|---|
| 3409 | [Make do-notation a bit more flexible (Trac #1537) |
|---|
| 3410 | simonpj@microsoft.com**20080205164816 |
|---|
| 3411 | |
|---|
| 3412 | This is a second attempt to fix #1537: to make the static typechecking |
|---|
| 3413 | of do-notation behave just like the desugared version of the same thing. |
|---|
| 3414 | This should allow parameterised monads to work properly (see Oleg's comment |
|---|
| 3415 | in the above ticket). |
|---|
| 3416 | |
|---|
| 3417 | We can probably merge to 6.8.3 if it goes smoothly. |
|---|
| 3418 | |
|---|
| 3419 | Incidentally, the resulting setup suffers from greater type ambiguity |
|---|
| 3420 | if (>>=) has a very general type. So test rebindable6 no longer works |
|---|
| 3421 | (at least not without more type signatures), and rebindable5 requires |
|---|
| 3422 | extra functional dependencies. But they are weird tests. |
|---|
| 3423 | |
|---|
| 3424 | ] |
|---|
| 3425 | [White space only |
|---|
| 3426 | simonpj@microsoft.com**20080205163702] |
|---|
| 3427 | [FIX #2047: Windows (and older Unixes): align info tables to 4 bytes, not 2 |
|---|
| 3428 | Simon Marlow <simonmar@microsoft.com>**20080205101425 |
|---|
| 3429 | Perhaps in the past '.align 2' meant align to 4 bytes, but nowadays it |
|---|
| 3430 | means align to 2 bytes. The compacting collector requires info tables |
|---|
| 3431 | to be aligned to 4 bytes, because it stores tag bits in the low 2 |
|---|
| 3432 | bits. |
|---|
| 3433 | |
|---|
| 3434 | This only affects -fvia-C - the native code generator was already |
|---|
| 3435 | emitting the correct alignment. The incorrect alignment might well |
|---|
| 3436 | have been adversely affecting performance with -fvia-C on Windows. |
|---|
| 3437 | ] |
|---|
| 3438 | [Most of installer for framework on system volume |
|---|
| 3439 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080205073738] |
|---|
| 3440 | [Split into two types of Mac installer specs |
|---|
| 3441 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080205052504] |
|---|
| 3442 | [Lambda logo for packages |
|---|
| 3443 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080205052017 |
|---|
| 3444 | - This image is in the public domain, cf |
|---|
| 3445 | http://en.wikipedia.org/wiki/Image:Greek_lc_lamda_thin.svg |
|---|
| 3446 | ] |
|---|
| 3447 | [xcode build target for fixed /Library/Frameworks inst |
|---|
| 3448 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080205030047 |
|---|
| 3449 | - Also moving all MacOS-specific Makefile components into |
|---|
| 3450 | distrib/MacOS/Makefile |
|---|
| 3451 | ] |
|---|
| 3452 | [First stab at an installer package for the Mac |
|---|
| 3453 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080202134853 |
|---|
| 3454 | - GHC as a Mac framework |
|---|
| 3455 | - I tried to make a package where the user could choose whether to install |
|---|
| 3456 | in /Library/Frameworks or ~/Library/Frameworks (to allow installation for |
|---|
| 3457 | non-admins). However, that doesn't work well without including the whole |
|---|
| 3458 | distribution twice as the decision as to whether the admin password needs |
|---|
| 3459 | to be entered is made at packaging time (not at install time). |
|---|
| 3460 | ] |
|---|
| 3461 | [Support for using libffi to implement FFI calls in GHCi (#631) |
|---|
| 3462 | Simon Marlow <simonmar@microsoft.com>**20080204161053 |
|---|
| 3463 | This means that an unregisterised build on a platform not directly |
|---|
| 3464 | supported by GHC can now have full FFI support using libffi. |
|---|
| 3465 | |
|---|
| 3466 | Also in this commit: |
|---|
| 3467 | |
|---|
| 3468 | - use PrimRep rather than CgRep to describe FFI args in the byte |
|---|
| 3469 | code generator. No functional changes, but PrimRep is more correct. |
|---|
| 3470 | |
|---|
| 3471 | - change TyCon.sizeofPrimRep to primRepSizeW, which is more useful |
|---|
| 3472 | ] |
|---|
| 3473 | [Use the correct libffi type for pointers |
|---|
| 3474 | Simon Marlow <simonmar@microsoft.com>**20080104131936] |
|---|
| 3475 | [Fix DEBUG build |
|---|
| 3476 | simonpj@microsoft.com**20080204160514] |
|---|
| 3477 | [Make seqAlts actually seq everything |
|---|
| 3478 | Ian Lynagh <igloo@earth.li>**20080203134321] |
|---|
| 3479 | [Strictness tweaks |
|---|
| 3480 | Ian Lynagh <igloo@earth.li>**20080203024836] |
|---|
| 3481 | [Whitespace |
|---|
| 3482 | Ian Lynagh <igloo@earth.li>**20080203003929] |
|---|
| 3483 | [Whitespace only |
|---|
| 3484 | Ian Lynagh <igloo@earth.li>**20080202213936] |
|---|
| 3485 | [Tweak strictness |
|---|
| 3486 | Ian Lynagh <igloo@earth.li>**20080202213542] |
|---|
| 3487 | [Fix warnings in deSugar/DsBinds |
|---|
| 3488 | Ian Lynagh <igloo@earth.li>**20080130144014] |
|---|
| 3489 | [UNDO: Be a little keener to inline |
|---|
| 3490 | Simon Marlow <simonmar@microsoft.com>**20080201144810 |
|---|
| 3491 | |
|---|
| 3492 | This patch caused at least the following test failures: |
|---|
| 3493 | 1744(normal) |
|---|
| 3494 | ghci028(ghci) |
|---|
| 3495 | unicode001(normal) |
|---|
| 3496 | and additionally made the stage3 build fail. |
|---|
| 3497 | |
|---|
| 3498 | A little more validation please! |
|---|
| 3499 | |
|---|
| 3500 | I didn't find the exact cause of the failure yet, but it appears that |
|---|
| 3501 | the Lexer is miscompiled in some strange way. If any of {Encoding, |
|---|
| 3502 | StringBuffer, or Lexer} are compiled without -O, the problem goes |
|---|
| 3503 | away. |
|---|
| 3504 | ] |
|---|
| 3505 | [FIX BUILD with GHC 6.4.x |
|---|
| 3506 | Simon Marlow <simonmar@microsoft.com>**20080201122753] |
|---|
| 3507 | [FIX BUILD with ghc-6.4.x |
|---|
| 3508 | Simon Marlow <simonmar@microsoft.com>**20080201114302] |
|---|
| 3509 | [Some tweaks to the building from source section |
|---|
| 3510 | Simon Marlow <simonmar@microsoft.com>**20080129091132] |
|---|
| 3511 | [Warning clean up |
|---|
| 3512 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080131024845] |
|---|
| 3513 | [Move spiltDmdTy within module (no change in code) |
|---|
| 3514 | simonpj@microsoft.com**20080129011438] |
|---|
| 3515 | [Fix typo where I forgot the new substitution |
|---|
| 3516 | simonpj@microsoft.com**20080128213856] |
|---|
| 3517 | [Add missing (error) case in isIrrefutablePat |
|---|
| 3518 | simonpj@microsoft.com**20080128213429] |
|---|
| 3519 | [Add missing (error) case in pprConDecl |
|---|
| 3520 | simonpj@microsoft.com**20080128213409] |
|---|
| 3521 | [Fix warnings on non-Windows |
|---|
| 3522 | Ian Lynagh <igloo@earth.li>**20080130114640] |
|---|
| 3523 | [Fixed warnings in main/ErrUtils |
|---|
| 3524 | Twan van Laarhoven <twanvl@gmail.com>**20080127015419] |
|---|
| 3525 | [Fixed warnings in main/HeaderInfo, except for incomplete pattern matches |
|---|
| 3526 | Twan van Laarhoven <twanvl@gmail.com>**20080127014118] |
|---|
| 3527 | [Fixed warnings in main/DynFlags |
|---|
| 3528 | Twan van Laarhoven <twanvl@gmail.com>**20080127012443] |
|---|
| 3529 | [Fixed warnings in hsSyn/HsSyn |
|---|
| 3530 | Twan van Laarhoven <twanvl@gmail.com>**20080127004626] |
|---|
| 3531 | [Fixed warnings in hsSyn/HsUtils |
|---|
| 3532 | Twan van Laarhoven <twanvl@gmail.com>**20080127004506] |
|---|
| 3533 | [Fixed warnings in hsSyn/HsTypes |
|---|
| 3534 | Twan van Laarhoven <twanvl@gmail.com>**20080127004419] |
|---|
| 3535 | [Fixed warnings in hsSyn/HsDoc |
|---|
| 3536 | Twan van Laarhoven <twanvl@gmail.com>**20080127004359] |
|---|
| 3537 | [Fixed warnings in hsSyn/HsLit |
|---|
| 3538 | Twan van Laarhoven <twanvl@gmail.com>**20080127004330] |
|---|
| 3539 | [Fixed warnings in hsSyn/HsImpExp, except for incomplete pattern matches |
|---|
| 3540 | Twan van Laarhoven <twanvl@gmail.com>**20080127004254] |
|---|
| 3541 | [Fixed warnings in hsSyn/HsPat, except for incomplete pattern matches |
|---|
| 3542 | Twan van Laarhoven <twanvl@gmail.com>**20080127004209] |
|---|
| 3543 | [Fixed warnings in hsSyn/HsBinds, except for incomplete pattern matches |
|---|
| 3544 | Twan van Laarhoven <twanvl@gmail.com>**20080127004119] |
|---|
| 3545 | [Fixed warnings in hsSyn/HsDecls, except for incomplete pattern matches |
|---|
| 3546 | Twan van Laarhoven <twanvl@gmail.com>**20080127004046] |
|---|
| 3547 | [Fixed warnings in simplCore/CSE |
|---|
| 3548 | Twan van Laarhoven <twanvl@gmail.com>**20080126233918] |
|---|
| 3549 | [Fixed warnings in profiling/CostCentre, except for incomplete pattern matches |
|---|
| 3550 | Twan van Laarhoven <twanvl@gmail.com>**20080126232841] |
|---|
| 3551 | [Fixed warnings in types/InstEnv |
|---|
| 3552 | Twan van Laarhoven <twanvl@gmail.com>**20080126231732] |
|---|
| 3553 | [Fixed warnings in types/FamInstEnv |
|---|
| 3554 | Twan van Laarhoven <twanvl@gmail.com>**20080126231426] |
|---|
| 3555 | [Fixed warnings in simplStg/SRT, except for incomplete pattern matches |
|---|
| 3556 | Twan van Laarhoven <twanvl@gmail.com>**20080126230900] |
|---|
| 3557 | [Fixed warnings in simplStg/StgStats, except for incomplete pattern matches |
|---|
| 3558 | Twan van Laarhoven <twanvl@gmail.com>**20080126230830] |
|---|
| 3559 | [Fixed warnings in simplStg/SimplStg |
|---|
| 3560 | Twan van Laarhoven <twanvl@gmail.com>**20080126230805] |
|---|
| 3561 | [Fixed warnings in vectorise/VectUtils |
|---|
| 3562 | Twan van Laarhoven <twanvl@gmail.com>**20080126223033] |
|---|
| 3563 | [Fixed warnings in types/Generics |
|---|
| 3564 | Twan van Laarhoven <twanvl@gmail.com>**20080126222817] |
|---|
| 3565 | [Fixed warnings in stgSyn/StgSyn |
|---|
| 3566 | Twan van Laarhoven <twanvl@gmail.com>**20080126221010] |
|---|
| 3567 | [Fixed warnings in types/TyCon |
|---|
| 3568 | Twan van Laarhoven <twanvl@gmail.com>**20080126215800] |
|---|
| 3569 | [Fixed warnings in types/Type, except for incomplete pattern matches |
|---|
| 3570 | Twan van Laarhoven <twanvl@gmail.com>**20080126214126] |
|---|
| 3571 | [Fixed warnings in types/TypeRep |
|---|
| 3572 | Twan van Laarhoven <twanvl@gmail.com>**20080126211722] |
|---|
| 3573 | [Fixed warnings in types/FunDeps |
|---|
| 3574 | Twan van Laarhoven <twanvl@gmail.com>**20080126203050] |
|---|
| 3575 | [Fixed warnings in basicTypes/OccName |
|---|
| 3576 | Twan van Laarhoven <twanvl@gmail.com>**20080126202737] |
|---|
| 3577 | [Fixed warnings in basicTypes/RdrName |
|---|
| 3578 | Twan van Laarhoven <twanvl@gmail.com>**20080126202104] |
|---|
| 3579 | [Fixed warnings in utils/Encoding |
|---|
| 3580 | Twan van Laarhoven <twanvl@gmail.com>**20080126201235] |
|---|
| 3581 | [Fixed warnings in utils/Digraph |
|---|
| 3582 | Twan van Laarhoven <twanvl@gmail.com>**20080126200754] |
|---|
| 3583 | [Fixed warnings in basicTypes/Demand |
|---|
| 3584 | Twan van Laarhoven <twanvl@gmail.com>**20080126195929] |
|---|
| 3585 | [Fixed warnings in basicTypes/Unique |
|---|
| 3586 | Twan van Laarhoven <twanvl@gmail.com>**20080126195459] |
|---|
| 3587 | [Fixed warnings in coreSyn/ExternalCore |
|---|
| 3588 | Twan van Laarhoven <twanvl@gmail.com>**20080126194759] |
|---|
| 3589 | [Fixed warnings in simplCore/OccurAnal |
|---|
| 3590 | Twan van Laarhoven <twanvl@gmail.com>**20080126194426] |
|---|
| 3591 | [Fixed warnings in basicTypes/BasicTypes |
|---|
| 3592 | Twan van Laarhoven <twanvl@gmail.com>**20080126194255] |
|---|
| 3593 | [Fixed warnings in basicTypes/Literal, except for incomplete pattern matches |
|---|
| 3594 | Twan van Laarhoven <twanvl@gmail.com>**20080126193209] |
|---|
| 3595 | [Fixed warnings in basicTypes/Id |
|---|
| 3596 | Twan van Laarhoven <twanvl@gmail.com>**20080126192817] |
|---|
| 3597 | [Fixed warnings in basicTypes/Var |
|---|
| 3598 | Twan van Laarhoven <twanvl@gmail.com>**20080126191939] |
|---|
| 3599 | [Fixed warnings in basicTypes/Name |
|---|
| 3600 | Twan van Laarhoven <twanvl@gmail.com>**20080126191501] |
|---|
| 3601 | [Fixed warnings in types/Coercion, except for incomplete pattern matches |
|---|
| 3602 | Twan van Laarhoven <twanvl@gmail.com>**20080126190735] |
|---|
| 3603 | [Fixed warnings in coreSyn/MkExternalCore, except for incomplete pattern matches |
|---|
| 3604 | Twan van Laarhoven <twanvl@gmail.com>**20080126012807] |
|---|
| 3605 | [Fixed warnings in coreSyn/PprExternalCore |
|---|
| 3606 | Twan van Laarhoven <twanvl@gmail.com>**20080125162418] |
|---|
| 3607 | [Fixed warnings in coreSyn/CoreUtils, except for incomplete pattern matches |
|---|
| 3608 | Twan van Laarhoven <twanvl@gmail.com>**20080125161800] |
|---|
| 3609 | [Fixed warnings in coreSyn/CoreUnfold |
|---|
| 3610 | Twan van Laarhoven <twanvl@gmail.com>**20080125161308] |
|---|
| 3611 | [Fixed warnings in coreSyn/CorePrep |
|---|
| 3612 | Twan van Laarhoven <twanvl@gmail.com>**20080125161051] |
|---|
| 3613 | [Fixed warnings in coreSyn/CoreSubst |
|---|
| 3614 | Twan van Laarhoven <twanvl@gmail.com>**20080125161002] |
|---|
| 3615 | [Fixed warnings in coreSyn/CoreLint |
|---|
| 3616 | Twan van Laarhoven <twanvl@gmail.com>**20080125160809] |
|---|
| 3617 | [Fixed warnings in coreSyn/CoreFVs, except for incomplete pattern matches |
|---|
| 3618 | Twan van Laarhoven <twanvl@gmail.com>**20080125160716] |
|---|
| 3619 | [Fixed warnings in types/Class |
|---|
| 3620 | Twan van Laarhoven <twanvl@gmail.com>**20080125160438] |
|---|
| 3621 | [Fix warnings in coreSyn/CoreTidy |
|---|
| 3622 | Twan van Laarhoven <twanvl@gmail.com>**20080118165559] |
|---|
| 3623 | [Fix warnings in coreSyn/CoreSyn |
|---|
| 3624 | Twan van Laarhoven <twanvl@gmail.com>**20080118165506] |
|---|
| 3625 | [Strictness tweaks |
|---|
| 3626 | Ian Lynagh <igloo@earth.li>**20080125174347] |
|---|
| 3627 | [Parser tweak |
|---|
| 3628 | Ian Lynagh <igloo@earth.li>**20080125145847] |
|---|
| 3629 | [A couple more parser tweaks |
|---|
| 3630 | Ian Lynagh <igloo@earth.li>**20080125143421] |
|---|
| 3631 | [Make comb[234] strict |
|---|
| 3632 | Ian Lynagh <igloo@earth.li>**20080124183149] |
|---|
| 3633 | [Strictness tweaks |
|---|
| 3634 | Ian Lynagh <igloo@earth.li>**20080124183142] |
|---|
| 3635 | [Tell happy to be strict |
|---|
| 3636 | Ian Lynagh <igloo@earth.li>**20080124165214] |
|---|
| 3637 | [Make the Parser Monad's return strict |
|---|
| 3638 | Ian Lynagh <igloo@earth.li>**20080124155827] |
|---|
| 3639 | [Get a bit of sharing |
|---|
| 3640 | Ian Lynagh <igloo@earth.li>**20080124152000] |
|---|
| 3641 | [Make sL strict in /both/ arguments to L |
|---|
| 3642 | Ian Lynagh <igloo@earth.li>**20080124151223] |
|---|
| 3643 | [A touch more strictness in the parser |
|---|
| 3644 | Ian Lynagh <igloo@earth.li>**20080124150137] |
|---|
| 3645 | [Add a bit of strictness to the parser |
|---|
| 3646 | Ian Lynagh <igloo@earth.li>**20080124145311] |
|---|
| 3647 | [Use nilFS |
|---|
| 3648 | Ian Lynagh <igloo@earth.li>**20080123211917] |
|---|
| 3649 | [Whitespace only |
|---|
| 3650 | Ian Lynagh <igloo@earth.li>**20080123174153] |
|---|
| 3651 | [Fix #2062: foldr1 problem in hpc tool |
|---|
| 3652 | andy@galois.com**20080126210607] |
|---|
| 3653 | [Fix do-notation so that it works with -DDEBUG |
|---|
| 3654 | simonpj@microsoft.com**20080125163101] |
|---|
| 3655 | [Be a little keener to inline |
|---|
| 3656 | simonpj@microsoft.com**20080125104616 |
|---|
| 3657 | |
|---|
| 3658 | This is really a bug. A saturated call in an "interesting" context |
|---|
| 3659 | should inline, but there was a strange "n_val_args > 0" condition, which |
|---|
| 3660 | was stopping it. Reported by Roman. |
|---|
| 3661 | |
|---|
| 3662 | |
|---|
| 3663 | ] |
|---|
| 3664 | [Fix the build |
|---|
| 3665 | Ian Lynagh <igloo@earth.li>**20080124141800 |
|---|
| 3666 | Work around various problems caused by some of the monadification patches |
|---|
| 3667 | not being applied. |
|---|
| 3668 | ] |
|---|
| 3669 | [Replace ioToTcRn with liftIO |
|---|
| 3670 | Twan van Laarhoven <twanvl@gmail.com>**20080117220553] |
|---|
| 3671 | [Remove unused custom versions of monad combinators from IOEnv |
|---|
| 3672 | Twan van Laarhoven <twanvl@gmail.com>**20080117215835] |
|---|
| 3673 | [Remove unused custom versions of monad combinators from UniqSupply |
|---|
| 3674 | Twan van Laarhoven <twanvl@gmail.com>**20080117215752] |
|---|
| 3675 | [Replace remaining uses of ioToIOEnv by liftIO, remove ioToIOEnv |
|---|
| 3676 | Twan van Laarhoven <twanvl@gmail.com>**20080117215233] |
|---|
| 3677 | [Monadify iface/BuildTyCl: use return |
|---|
| 3678 | Twan van Laarhoven <twanvl@gmail.com>**20080117215036] |
|---|
| 3679 | [Monadify iface/TcIface: use do, return, applicative, standard monad functions |
|---|
| 3680 | Twan van Laarhoven <twanvl@gmail.com>**20080117214938] |
|---|
| 3681 | [Monadify iface/MkIface: use do, return and standard monad functions |
|---|
| 3682 | Twan van Laarhoven <twanvl@gmail.com>**20080117214441] |
|---|
| 3683 | [Monadify iface/LoadIface: use return and liftIO |
|---|
| 3684 | Twan van Laarhoven <twanvl@gmail.com>**20080117214233] |
|---|
| 3685 | [Monadify iface/IfaceEnv: use do, return and standard monad functions |
|---|
| 3686 | Twan van Laarhoven <twanvl@gmail.com>**20080117214041] |
|---|
| 3687 | [Monadify typecheck/TcRnMonad: use return, standard monad functions and liftIO |
|---|
| 3688 | Twan van Laarhoven <twanvl@gmail.com>**20080117213850] |
|---|
| 3689 | [Monadify typecheck/TcEnv: use do, return, applicative, standard monad functions |
|---|
| 3690 | Twan van Laarhoven <twanvl@gmail.com>**20080117213636] |
|---|
| 3691 | [Monadify typecheck/TcRnDriver: use return and standard monad functions |
|---|
| 3692 | Twan van Laarhoven <twanvl@gmail.com>**20080117213352] |
|---|
| 3693 | [Monadify typecheck/TcMatches: use return and standard monad functions |
|---|
| 3694 | Twan van Laarhoven <twanvl@gmail.com>**20080117213307] |
|---|
| 3695 | [Monadify typecheck/TcMType: use do, return, applicative, standard monad functions |
|---|
| 3696 | Twan van Laarhoven <twanvl@gmail.com>**20080117213242] |
|---|
| 3697 | [Monadify typecheck/TcInstDcls: use do, return and standard monad functions |
|---|
| 3698 | Twan van Laarhoven <twanvl@gmail.com>**20080117213040] |
|---|
| 3699 | [Monadify typecheck/TcHsType: use do, return and standard monad functions |
|---|
| 3700 | Twan van Laarhoven <twanvl@gmail.com>**20080117212822] |
|---|
| 3701 | [Monadify typecheck/TcSimplify: use do, return and standard monad functions |
|---|
| 3702 | Twan van Laarhoven <twanvl@gmail.com>**20080117212200] |
|---|
| 3703 | [Monadify typecheck/TcSplice: use do and return |
|---|
| 3704 | Twan van Laarhoven <twanvl@gmail.com>**20080117211911] |
|---|
| 3705 | [Monadify typecheck/TcTyClsDecls: use return and standard monad functions |
|---|
| 3706 | Twan van Laarhoven <twanvl@gmail.com>**20080117211746] |
|---|
| 3707 | [Monadify typecheck/TcDefaults: use return and standard monad functions |
|---|
| 3708 | Twan van Laarhoven <twanvl@gmail.com>**20080117211558] |
|---|
| 3709 | [Monadify typecheck/TcDeriv: use return |
|---|
| 3710 | Twan van Laarhoven <twanvl@gmail.com>**20080117211507] |
|---|
| 3711 | [Monadify typecheck/TcClassDcl: use do, return and standard monad functions |
|---|
| 3712 | Twan van Laarhoven <twanvl@gmail.com>**20080117211439] |
|---|
| 3713 | [Monadify typecheck/TcBinds: use do, return and standard monad functions |
|---|
| 3714 | Twan van Laarhoven <twanvl@gmail.com>**20080117211035] |
|---|
| 3715 | [Monadify typecheck/TcArrows: use do and return |
|---|
| 3716 | Twan van Laarhoven <twanvl@gmail.com>**20080117210818] |
|---|
| 3717 | [Monadify typecheck/Inst: use do, return and standard monad functions |
|---|
| 3718 | Twan van Laarhoven <twanvl@gmail.com>**20080117210655] |
|---|
| 3719 | [Monadify typecheck/TcUnify: use do, return and standard monad functions |
|---|
| 3720 | Twan van Laarhoven <twanvl@gmail.com>**20080117210213 |
|---|
| 3721 | there may be some accidental tab->space conversion |
|---|
| 3722 | ] |
|---|
| 3723 | [Monadify typecheck/TcTyFuns: use standard monad functions |
|---|
| 3724 | Twan van Laarhoven <twanvl@gmail.com>**20080117205505] |
|---|
| 3725 | [Monadify typecheck/TcPat: use return and standard monad functions |
|---|
| 3726 | Twan van Laarhoven <twanvl@gmail.com>**20080117205423] |
|---|
| 3727 | [Monadify typecheck/TcRules: use do, return and standard monad functions |
|---|
| 3728 | Twan van Laarhoven <twanvl@gmail.com>**20080117205307] |
|---|
| 3729 | [Monadify typecheck/TcForeign: use do, return and standard monad functions |
|---|
| 3730 | Twan van Laarhoven <twanvl@gmail.com>**20080117204934] |
|---|
| 3731 | [Monadify typecheck/TcExpr: use do, return and standard monad functions |
|---|
| 3732 | Twan van Laarhoven <twanvl@gmail.com>**20080117204603] |
|---|
| 3733 | [Monadify specialise/Specialise: use do, return, standard monad functions and MonadUnique |
|---|
| 3734 | Twan van Laarhoven <twanvl@gmail.com>**20080117204330] |
|---|
| 3735 | [Monadify specialise/SpecConstr: use do, return and standard monad functions |
|---|
| 3736 | Twan van Laarhoven <twanvl@gmail.com>**20080117203842] |
|---|
| 3737 | [Monadify stgSyn/StgLint |
|---|
| 3738 | Twan van Laarhoven <twanvl@gmail.com>**20080117203042 |
|---|
| 3739 | - made LintM a newtype instead of a type synonym |
|---|
| 3740 | - use do, return and standard monad functions |
|---|
| 3741 | - use MaybeT where `thenMaybeL` was used |
|---|
| 3742 | - removed custom versions of monad functions |
|---|
| 3743 | |
|---|
| 3744 | ] |
|---|
| 3745 | [Monadify stgSyn/CoreToStg |
|---|
| 3746 | Twan van Laarhoven <twanvl@gmail.com>**20080117202619 |
|---|
| 3747 | - made LneM a newtype instead of a type synonym |
|---|
| 3748 | - use do, return and standard monad functions |
|---|
| 3749 | - removed custom versions of monad functions |
|---|
| 3750 | ] |
|---|
| 3751 | [Remove generic monad function from State, it was moved to MonadUtils |
|---|
| 3752 | Twan van Laarhoven <twanvl@gmail.com>**20080117202144] |
|---|
| 3753 | [Added MaybeT monad transformer to utils/Maybes |
|---|
| 3754 | Twan van Laarhoven <twanvl@gmail.com>**20080117202051] |
|---|
| 3755 | [Removed unused Maybe functions, use the standard Maybe monad instead |
|---|
| 3756 | Twan van Laarhoven <twanvl@gmail.com>**20080117201953] |
|---|
| 3757 | [MonadIO instance for IOEnv |
|---|
| 3758 | Twan van Laarhoven <twanvl@gmail.com>**20080117201812] |
|---|
| 3759 | [Monadify simplCore/SimplMonad: custom monad functions are no longer needed |
|---|
| 3760 | Twan van Laarhoven <twanvl@gmail.com>**20080117200354] |
|---|
| 3761 | [Monadify simplCore/SimplMonad: use MonadUnique instance instead of custom functions |
|---|
| 3762 | Twan van Laarhoven <twanvl@gmail.com>**20080117200228] |
|---|
| 3763 | [Monadify simplCore/SetLevels: use do, return, standard monad functions and MonadUnique |
|---|
| 3764 | Twan van Laarhoven <twanvl@gmail.com>**20080117195958] |
|---|
| 3765 | [Monadify simplCore/SimplUtils: use do, return, standard monad functions and MonadUnique |
|---|
| 3766 | Twan van Laarhoven <twanvl@gmail.com>**20080117195625] |
|---|
| 3767 | [Monadify simplCore/Simplify: use do and return |
|---|
| 3768 | Twan van Laarhoven <twanvl@gmail.com>**20080117195408] |
|---|
| 3769 | [Monadify simplCore/SimplEnv: use standard monad functions |
|---|
| 3770 | Twan van Laarhoven <twanvl@gmail.com>**20080117195255] |
|---|
| 3771 | [Monadify simplCore/SimplCore: use do, return and standard monad functions |
|---|
| 3772 | Twan van Laarhoven <twanvl@gmail.com>**20080117195149] |
|---|
| 3773 | [Monadify profiling/SCCfinal |
|---|
| 3774 | Twan van Laarhoven <twanvl@gmail.com>**20080117194417 |
|---|
| 3775 | - change monad type synonym into a newtype |
|---|
| 3776 | - use do, return and standard monad functions |
|---|
| 3777 | ] |
|---|
| 3778 | [Monadify coreSyn/CorePrep: use do, return, applicative, standard monad functions |
|---|
| 3779 | Twan van Laarhoven <twanvl@gmail.com>**20080117193154] |
|---|
| 3780 | [Monadify rename/RnTypes: use do, return and standard monad functions |
|---|
| 3781 | Twan van Laarhoven <twanvl@gmail.com>**20080117190823] |
|---|
| 3782 | [Monadify rename/RnPat: use do, return and standard monad functions |
|---|
| 3783 | Twan van Laarhoven <twanvl@gmail.com>**20080117190033] |
|---|
| 3784 | [Monadify rename/RnNames: use return and standard monad functions |
|---|
| 3785 | Twan van Laarhoven <twanvl@gmail.com>**20080117185837] |
|---|
| 3786 | [seqMaybe is more commonly known as mplus |
|---|
| 3787 | Twan van Laarhoven <twanvl@gmail.com>**20080117185330] |
|---|
| 3788 | [Monadify rename/RnBinds: use do, return and standard monad functions |
|---|
| 3789 | Twan van Laarhoven <twanvl@gmail.com>**20080117184354] |
|---|
| 3790 | [Monadify stranal/StrictAnal: use the State monad instead of a custom thing |
|---|
| 3791 | Twan van Laarhoven <twanvl@gmail.com>**20080117180449] |
|---|
| 3792 | [Monadify stranal/WwLib: use do, return, applicative, standard monad functions |
|---|
| 3793 | Twan van Laarhoven <twanvl@gmail.com>**20080117180022] |
|---|
| 3794 | [Added MonadUnique class for monads that have a unique supply |
|---|
| 3795 | Twan van Laarhoven <twanvl@gmail.com>**20080117175616] |
|---|
| 3796 | [Monadify stranal/WorkWrap: use do, return, applicative, standard monad functions |
|---|
| 3797 | Twan van Laarhoven <twanvl@gmail.com>**20080117175007] |
|---|
| 3798 | [Added Applicative and Functor instances for State monad |
|---|
| 3799 | Twan van Laarhoven <twanvl@gmail.com>**20080117174656] |
|---|
| 3800 | [Monadify deSugar/DsMonad: use do, return, applicative, standard monad functions |
|---|
| 3801 | Twan van Laarhoven <twanvl@gmail.com>**20080117174432] |
|---|
| 3802 | [Monadify deSugar/Desugar: use do, return, applicative, standard monad functions |
|---|
| 3803 | Twan van Laarhoven <twanvl@gmail.com>**20080117174130] |
|---|
| 3804 | [Monadify deSugar/DsUtils: use do, return, applicative, standard monad functions |
|---|
| 3805 | Twan van Laarhoven <twanvl@gmail.com>**20080117173856] |
|---|
| 3806 | [Monadify deSugar/DsListComp: use do, return, applicative, standard monad functions |
|---|
| 3807 | Twan van Laarhoven <twanvl@gmail.com>**20080117173205] |
|---|
| 3808 | [Monadify deSugar/DsForeign: use do, return, applicative, standard monad functions |
|---|
| 3809 | Twan van Laarhoven <twanvl@gmail.com>**20080117172843] |
|---|
| 3810 | [Monadify deSugar/DsGRHSs: use do, return, applicative, standard monad functions |
|---|
| 3811 | Twan van Laarhoven <twanvl@gmail.com>**20080117172228] |
|---|
| 3812 | [Monadify deSugar/DsExpr: use do, return, applicative, standard monad functions |
|---|
| 3813 | Twan van Laarhoven <twanvl@gmail.com>**20080117164055] |
|---|
| 3814 | [Added Applicative instance for IOEnv |
|---|
| 3815 | Twan van Laarhoven <twanvl@gmail.com>**20080117162644] |
|---|
| 3816 | [Add 'util/MonadUtils.hs' with common monad (and applicative) combinators |
|---|
| 3817 | Twan van Laarhoven <twanvl@gmail.com>**20080117161939] |
|---|
| 3818 | [Monadify deSugar/MatchLit: use do, return, applicative, standard monad functions |
|---|
| 3819 | Twan van Laarhoven <twanvl@gmail.com>**20080117173439] |
|---|
| 3820 | [Monadify deSugar/Match: use do, return, applicative, standard monad functions |
|---|
| 3821 | Twan van Laarhoven <twanvl@gmail.com>**20080117173336] |
|---|
| 3822 | [Monadify deSugar/DsCCall: use do, return, applicative, standard monad functions |
|---|
| 3823 | Twan van Laarhoven <twanvl@gmail.com>**20080117165334] |
|---|
| 3824 | [Monadify deSugar/DsArrows: use do, return, applicative, standard monad functions |
|---|
| 3825 | Twan van Laarhoven <twanvl@gmail.com>**20080117165114] |
|---|
| 3826 | [Monadify deSugar/DsBinds: use do, return, applicative, standard monad functions |
|---|
| 3827 | Twan van Laarhoven <twanvl@gmail.com>**20080117164746] |
|---|
| 3828 | [Added MASSERT macro for assertions in do notation |
|---|
| 3829 | Twan van Laarhoven <twanvl@gmail.com>**20080117163112] |
|---|
| 3830 | [FIX BUILD wrong imports on non-Windows |
|---|
| 3831 | Simon Marlow <simonmar@microsoft.com>**20080124092935] |
|---|
| 3832 | [Show CmdLineError exceptions as "<command line>: ..." |
|---|
| 3833 | Simon Marlow <simonmar@microsoft.com>**20080123163145 |
|---|
| 3834 | instead of something like "ghc-6.8.2: ...", which causes problems in |
|---|
| 3835 | the test suite. In any case, "<command line>" seems a more |
|---|
| 3836 | appropriate context for these errors, the only question is whether |
|---|
| 3837 | we're using CmdLineError incorrectly anywhere. |
|---|
| 3838 | ] |
|---|
| 3839 | [FIX #1750: in isBrokenPackage, don't loop if the deps are recursive |
|---|
| 3840 | Simon Marlow <simonmar@microsoft.com>**20080123160703] |
|---|
| 3841 | [FIX #1750: throw out mutually recursive groups of packages |
|---|
| 3842 | Simon Marlow <simonmar@microsoft.com>**20080123160635] |
|---|
| 3843 | [Windows now doesn't need different values for DQ in the build system |
|---|
| 3844 | Ian Lynagh <igloo@earth.li>**20080123173933] |
|---|
| 3845 | [Fix setting argv[0] in shell-utils.c on Windows |
|---|
| 3846 | Ian Lynagh <igloo@earth.li>**20080123160139] |
|---|
| 3847 | [Escape arguments for Windows in shell-tools.c |
|---|
| 3848 | Ian Lynagh <igloo@earth.li>**20080123151724] |
|---|
| 3849 | [Attach the INLINE Activation pragma to any automatically-generated specialisations |
|---|
| 3850 | simonpj@microsoft.com**20080123134012 |
|---|
| 3851 | |
|---|
| 3852 | Another idea suggested by Roman, happily involving a one-line change. Here's |
|---|
| 3853 | the new Note in Specialise: |
|---|
| 3854 | |
|---|
| 3855 | Note [Auto-specialisation and RULES] |
|---|
| 3856 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 3857 | Consider: |
|---|
| 3858 | g :: Num a => a -> a |
|---|
| 3859 | g = ... |
|---|
| 3860 | |
|---|
| 3861 | f :: (Int -> Int) -> Int |
|---|
| 3862 | f w = ... |
|---|
| 3863 | {-# RULE f g = 0 #-} |
|---|
| 3864 | |
|---|
| 3865 | Suppose that auto-specialisation makes a specialised version of |
|---|
| 3866 | g::Int->Int That version won't appear in the LHS of the RULE for f. |
|---|
| 3867 | So if the specialisation rule fires too early, the rule for f may |
|---|
| 3868 | never fire. |
|---|
| 3869 | |
|---|
| 3870 | It might be possible to add new rules, to "complete" the rewrite system. |
|---|
| 3871 | Thus when adding |
|---|
| 3872 | RULE forall d. g Int d = g_spec |
|---|
| 3873 | also add |
|---|
| 3874 | RULE f g_spec = 0 |
|---|
| 3875 | |
|---|
| 3876 | But that's a bit complicated. For now we ask the programmer's help, |
|---|
| 3877 | by *copying the INLINE activation pragma* to the auto-specialised rule. |
|---|
| 3878 | So if g says {-# NOINLINE[2] g #-}, then the auto-spec rule will also |
|---|
| 3879 | not be active until phase 2. |
|---|
| 3880 | |
|---|
| 3881 | ] |
|---|
| 3882 | [Tidy up the treatment of SPECIALISE pragmas |
|---|
| 3883 | simonpj@microsoft.com**20080122122613 |
|---|
| 3884 | |
|---|
| 3885 | Remove the now-redundant "const-dicts" field in SpecPrag |
|---|
| 3886 | |
|---|
| 3887 | In dsBinds, abstract over constant dictionaries in the RULE. |
|---|
| 3888 | This avoids the creation of a redundant, duplicate, rule later |
|---|
| 3889 | in the Specialise pass, which was happening before. |
|---|
| 3890 | |
|---|
| 3891 | There should be no effect on performance either way, just less |
|---|
| 3892 | duplicated code, and the compiler gets a little simpler. |
|---|
| 3893 | |
|---|
| 3894 | ] |
|---|
| 3895 | [Comments only |
|---|
| 3896 | simonpj@microsoft.com**20080122122547] |
|---|
| 3897 | [FIX #1838, #1987: change where GHCi searches for config files |
|---|
| 3898 | Simon Marlow <simonmar@microsoft.com>**20080123143207 |
|---|
| 3899 | |
|---|
| 3900 | 6.6 behaviour: |
|---|
| 3901 | - ./.ghci |
|---|
| 3902 | - $HOME/.ghci |
|---|
| 3903 | |
|---|
| 3904 | 6.8.[12] behaviour: |
|---|
| 3905 | - ./.ghci |
|---|
| 3906 | - Windows: c:/Documents and Settings/<user>/.ghci |
|---|
| 3907 | - Unix: $HOME/.ghci |
|---|
| 3908 | |
|---|
| 3909 | 6.10 (and 6.8.3 when this is merged): |
|---|
| 3910 | - ./.ghci |
|---|
| 3911 | - Windows: c:/Documents and Settings/<user>/Application Data/ghc/ghci.conf |
|---|
| 3912 | - Unix: $HOME/.ghc/ghci.conf |
|---|
| 3913 | - $HOME/.ghci |
|---|
| 3914 | |
|---|
| 3915 | We will need to document this in the 6.8.3 release notes because it |
|---|
| 3916 | may affect Windows users who have adapted their setup to 6.8.[12]. |
|---|
| 3917 | ] |
|---|
| 3918 | [FIX #1767 :show documentation claimed too much |
|---|
| 3919 | Simon Marlow <simonmar@microsoft.com>**20080122152943 |
|---|
| 3920 | Also put the :help docs back within 80 columns |
|---|
| 3921 | ] |
|---|
| 3922 | [fix syntax-error output for :show |
|---|
| 3923 | Simon Marlow <simonmar@microsoft.com>**20080122144923] |
|---|
| 3924 | [This goes with the patch for #1839, #1463 |
|---|
| 3925 | Simon Marlow <simonmar@microsoft.com>**20080122161811] |
|---|
| 3926 | [use pathSeparator instead of '/' |
|---|
| 3927 | Simon Marlow <simonmar@microsoft.com>**20080122140957] |
|---|
| 3928 | [cleanup only |
|---|
| 3929 | Simon Marlow <simonmar@microsoft.com>**20080122132047] |
|---|
| 3930 | [FIX #1839, #1463, by supporting ghc-pkg bulk queries with substring matching |
|---|
| 3931 | claus.reinke@talk21.com**20080121161744 |
|---|
| 3932 | |
|---|
| 3933 | - #1839 asks for a ghc-pkg dump feature, #1463 for the ability |
|---|
| 3934 | to query the same fields in several packages at once. |
|---|
| 3935 | |
|---|
| 3936 | - this patch enables substring matching for packages in 'list', |
|---|
| 3937 | 'describe', and 'field', and for modules in find-module. it |
|---|
| 3938 | also allows for comma-separated multiple fields in 'field'. |
|---|
| 3939 | substring matching can optionally ignore cases to avoid the |
|---|
| 3940 | rather unpredictable capitalisation of packages. |
|---|
| 3941 | |
|---|
| 3942 | - the patch is not quite as full-featured as the one attached |
|---|
| 3943 | to #1839, but avoids the additional dependency on regexps. |
|---|
| 3944 | open ended substrings are indicated by '*' (only the three |
|---|
| 3945 | forms prefix*, *suffix, *infix* are supported) |
|---|
| 3946 | |
|---|
| 3947 | - on windows, the use of '*' for package/module name globbing |
|---|
| 3948 | leads to conflicts with filename globbing: by default, windows |
|---|
| 3949 | programs are self-globbing, and bash adds another level of |
|---|
| 3950 | globbing on top of that. it seems impossible to escape '*' |
|---|
| 3951 | from both levels of globbing, so we disable default globbing |
|---|
| 3952 | for ghc-pkg and ghc-pkg-inplace. users of bash will still |
|---|
| 3953 | have filename globbing available, users of cmd won't. |
|---|
| 3954 | |
|---|
| 3955 | - if it is considered necessary to reenable filename globbing |
|---|
| 3956 | for cmd users, it should be done selectively, only for |
|---|
| 3957 | filename parameters. to this end, the patch includes a |
|---|
| 3958 | glob.hs program which simply echoes its parameters after |
|---|
| 3959 | filename globbing. see the commented out glob command in |
|---|
| 3960 | Main.hs for usage or testing. |
|---|
| 3961 | |
|---|
| 3962 | - this covers both tickets, and permits for the most common |
|---|
| 3963 | query patterns (finding all packages contributing to the |
|---|
| 3964 | System. hierarchy, finding all regex or string packages, |
|---|
| 3965 | listing all package maintainers or haddock directories, |
|---|
| 3966 | ..), which not only i have wanted to have for a long time. |
|---|
| 3967 | |
|---|
| 3968 | examples (the quotes are needed to escape shell-based |
|---|
| 3969 | filename globbing and should be omitted in cmd.exe): |
|---|
| 3970 | |
|---|
| 3971 | ghc-pkg list '*regex*' --ignore-case |
|---|
| 3972 | ghc-pkg list '*string*' --ignore-case |
|---|
| 3973 | ghc-pkg list '*gl*' --ignore-case |
|---|
| 3974 | ghc-pkg find-module 'Data.*' |
|---|
| 3975 | ghc-pkg find-module '*Monad*' |
|---|
| 3976 | ghc-pkg field '*' name,maintainer |
|---|
| 3977 | ghc-pkg field '*' haddock-html |
|---|
| 3978 | ghc-pkg describe '*' |
|---|
| 3979 | |
|---|
| 3980 | |
|---|
| 3981 | ] |
|---|
| 3982 | [Wibble to the OccurAnal fix for RULEs and loop-breakers |
|---|
| 3983 | simonpj@microsoft.com**20080121165529] |
|---|
| 3984 | [FIX #2049, another problem with the module context on :reload |
|---|
| 3985 | Simon Marlow <simonmar@microsoft.com>**20080121145935 |
|---|
| 3986 | The previous attempt to fix this (#1873, #1360) left a problem that |
|---|
| 3987 | occurred when the first :load of the program failed (#2049). |
|---|
| 3988 | |
|---|
| 3989 | Now I've implemented a different strategy: between :loads, we remember |
|---|
| 3990 | all the :module commands, and just replay them after a :reload. This |
|---|
| 3991 | is in addition to remembering all the package modules added with |
|---|
| 3992 | :module, which is orthogonal. |
|---|
| 3993 | |
|---|
| 3994 | This approach is simpler than the previous one, and seems to do the |
|---|
| 3995 | right thing in all the cases I could think of. Let's hope this is the |
|---|
| 3996 | last bug in this series... |
|---|
| 3997 | ] |
|---|
| 3998 | [Increase the bar for bootstrapping GHC to 6.4 (HEAD only) |
|---|
| 3999 | Simon Marlow <simonmar@microsoft.com>**20080121111835 |
|---|
| 4000 | - remove $(ghc_ge_601), $(ghc_ge_602), $(ghc_ge_603) |
|---|
| 4001 | - configure now checks the GHC version number |
|---|
| 4002 | - there are probably various cleanups that we can now do in compat/ |
|---|
| 4003 | and compiler/, but I haven't done those yet. |
|---|
| 4004 | ] |
|---|
| 4005 | [Do not worker/wrapper INLINE things, even if they are in a recursive group |
|---|
| 4006 | simonpj@microsoft.com**20080121135909 |
|---|
| 4007 | |
|---|
| 4008 | This patch stops the worker/wrapper transform working on an INLINE thing, |
|---|
| 4009 | even if it's in a recursive group. It might not be the loop breaker. Indeed |
|---|
| 4010 | a recursive group might have no loop breaker, if the only recursion is |
|---|
| 4011 | through rules. |
|---|
| 4012 | |
|---|
| 4013 | Again, this change was provoked by one of Roman's NDP libraries. |
|---|
| 4014 | Specifically the Rec { splitD, splitJoinD } group in |
|---|
| 4015 | Data.Array.Parallel.Unlifted.Distributed.Arrays |
|---|
| 4016 | |
|---|
| 4017 | Simon |
|---|
| 4018 | |
|---|
| 4019 | ] |
|---|
| 4020 | [Make the loop-breaking algorithm a bit more liberal, where RULES are involved |
|---|
| 4021 | simonpj@microsoft.com**20080121135654 |
|---|
| 4022 | |
|---|
| 4023 | This is another gloss on the now-quite-subtle and heavily-documented algorithm |
|---|
| 4024 | for choosing loop breakers. |
|---|
| 4025 | |
|---|
| 4026 | This fix, provoked by Roman's NDP library, makes sure that when we are choosing |
|---|
| 4027 | a loop breaker we only take into account variables free on the *rhs* of a rule |
|---|
| 4028 | not the *lhs*. |
|---|
| 4029 | |
|---|
| 4030 | Most of the new lines are comments! |
|---|
| 4031 | |
|---|
| 4032 | ] |
|---|
| 4033 | [Fix Trac #2055 |
|---|
| 4034 | simonpj@microsoft.com**20080121124244 |
|---|
| 4035 | |
|---|
| 4036 | Sorry, this was my fault, a consequence of the quasi-quoting patch. |
|---|
| 4037 | |
|---|
| 4038 | I've added rn062 as a test. |
|---|
| 4039 | |
|---|
| 4040 | |
|---|
| 4041 | ] |
|---|
| 4042 | [Fix exception message with ghc -e |
|---|
| 4043 | Ian Lynagh <igloo@earth.li>**20080121104142 |
|---|
| 4044 | When running with ghc -e, exceptions should claim to be from the program |
|---|
| 4045 | that we are running, not ghc. |
|---|
| 4046 | ] |
|---|
| 4047 | [Fix warnings in main/CmdLineParser |
|---|
| 4048 | Ian Lynagh <igloo@earth.li>**20080121103158] |
|---|
| 4049 | [Normalise FilePaths before printing them |
|---|
| 4050 | Ian Lynagh <igloo@earth.li>**20080120193002] |
|---|
| 4051 | [Tweak runghc |
|---|
| 4052 | Ian Lynagh <igloo@earth.li>**20080120184639] |
|---|
| 4053 | [Fix catching exit exceptions in ghc -e |
|---|
| 4054 | Ian Lynagh <igloo@earth.li>**20080120170236] |
|---|
| 4055 | [Typo in phase-control documentation |
|---|
| 4056 | simonpj@microsoft.com**20080121113620] |
|---|
| 4057 | [Fix warnings in main/Main |
|---|
| 4058 | Ian Lynagh <igloo@earth.li>**20080119235914] |
|---|
| 4059 | [Support multiple -e flags |
|---|
| 4060 | Ian Lynagh <igloo@earth.li>**20080119223036] |
|---|
| 4061 | [Fix ghc -e :main (it was enqueuing the main function, but not running it) |
|---|
| 4062 | Ian Lynagh <igloo@earth.li>**20080119220044] |
|---|
| 4063 | [Fix whitespace |
|---|
| 4064 | Ian Lynagh <igloo@earth.li>**20080119212830] |
|---|
| 4065 | [Fix giving an error if we are given conflicting mode flags |
|---|
| 4066 | Ian Lynagh <igloo@earth.li>**20080119212602] |
|---|
| 4067 | [Add :run and tweak :main |
|---|
| 4068 | Ian Lynagh <igloo@earth.li>**20080119164923 |
|---|
| 4069 | You can now give :main a Haskell [String] as an argument, e.g. |
|---|
| 4070 | :main ["foo", "bar"] |
|---|
| 4071 | and :run is a variant that takes the name of the function to run. |
|---|
| 4072 | Also, :main now obeys the -main-is flag. |
|---|
| 4073 | ] |
|---|
| 4074 | [Make MacFrameworks a subdirectory of distrib, since it isn't used in the normal building process. |
|---|
| 4075 | judah.jacobson@gmail.com**20071217235735] |
|---|
| 4076 | [Add scripts for building GMP.framework and GNUreadline.framework (OS X). |
|---|
| 4077 | judah.jacobson@gmail.com**20071127072951] |
|---|
| 4078 | [Use -framework-path flags during the cc phase. Fixes trac #1975. |
|---|
| 4079 | judah.jacobson@gmail.com**20071212201245] |
|---|
| 4080 | [FIX #1821 (Parser or lexer mess-up) |
|---|
| 4081 | df@dfranke.us**20071210230649] |
|---|
| 4082 | [Improve the error when :list can't find any code to show |
|---|
| 4083 | Ian Lynagh <igloo@earth.li>**20080118225655] |
|---|
| 4084 | [Fix imports when !DEBUG |
|---|
| 4085 | Ian Lynagh <igloo@earth.li>**20080118180126] |
|---|
| 4086 | [Tweak the splitter |
|---|
| 4087 | Ian Lynagh <igloo@earth.li>**20080116195612 |
|---|
| 4088 | We were generating a label ".LnLC7", which the splitter was confusing |
|---|
| 4089 | with a literal constant (LC). The end result was the assembler tripping |
|---|
| 4090 | up on ".Ln.text". |
|---|
| 4091 | ] |
|---|
| 4092 | [Wibble to SetLevels.abstractVars |
|---|
| 4093 | simonpj@microsoft.com**20080118171754 |
|---|
| 4094 | |
|---|
| 4095 | I've gotten this wrong more than once. Hopefully this has it nailed. |
|---|
| 4096 | The issue is that in float-out we must abstract over the correct |
|---|
| 4097 | variables. |
|---|
| 4098 | |
|---|
| 4099 | |
|---|
| 4100 | ] |
|---|
| 4101 | [Add quasi-quotation, courtesy of Geoffrey Mainland |
|---|
| 4102 | simonpj@microsoft.com**20080118145503 |
|---|
| 4103 | |
|---|
| 4104 | This patch adds quasi-quotation, as described in |
|---|
| 4105 | "Nice to be Quoted: Quasiquoting for Haskell" |
|---|
| 4106 | (Geoffrey Mainland, Haskell Workshop 2007) |
|---|
| 4107 | Implemented by Geoffrey and polished by Simon. |
|---|
| 4108 | |
|---|
| 4109 | Overview |
|---|
| 4110 | ~~~~~~~~ |
|---|
| 4111 | The syntax for quasiquotation is very similar to the existing |
|---|
| 4112 | Template haskell syntax: |
|---|
| 4113 | [$q| stuff |] |
|---|
| 4114 | where 'q' is the "quoter". This syntax differs from the paper, by using |
|---|
| 4115 | a '$' rather than ':', to avoid clashing with parallel array comprehensions. |
|---|
| 4116 | |
|---|
| 4117 | The "quoter" is a value of type Language.Haskell.TH.Quote.QuasiQuoter, which |
|---|
| 4118 | contains two functions for quoting expressions and patterns, respectively. |
|---|
| 4119 | |
|---|
| 4120 | quote = Language.Haskell.TH.Quote.QuasiQuoter quoteExp quotePat |
|---|
| 4121 | |
|---|
| 4122 | quoteExp :: String -> Language.Haskell.TH.ExpQ |
|---|
| 4123 | quotePat :: String -> Language.Haskell.TH.PatQ |
|---|
| 4124 | |
|---|
| 4125 | TEXT is passed unmodified to the quoter. The context of the |
|---|
| 4126 | quasiquotation statement determines which of the two quoters is |
|---|
| 4127 | called: if the quasiquotation occurs in an expression context, |
|---|
| 4128 | quoteExp is called, and if it occurs in a pattern context, quotePat |
|---|
| 4129 | is called. |
|---|
| 4130 | |
|---|
| 4131 | The result of running the quoter on its arguments is spliced into |
|---|
| 4132 | the program using Template Haskell's existing mechanisms for |
|---|
| 4133 | splicing in code. Note that although Template Haskell does not |
|---|
| 4134 | support pattern brackets, with this patch binding occurrences of |
|---|
| 4135 | variables in patterns are supported. Quoters must also obey the same |
|---|
| 4136 | stage restrictions as Template Haskell; in particular, in this |
|---|
| 4137 | example quote may not be defined in the module where it is used as a |
|---|
| 4138 | quasiquoter, but must be imported from another module. |
|---|
| 4139 | |
|---|
| 4140 | Points to notice |
|---|
| 4141 | ~~~~~~~~~~~~~~~~ |
|---|
| 4142 | * The whole thing is enabled with the flag -XQuasiQuotes |
|---|
| 4143 | |
|---|
| 4144 | * There is an accompanying patch to the template-haskell library. This |
|---|
| 4145 | involves one interface change: |
|---|
| 4146 | currentModule :: Q String |
|---|
| 4147 | is replaced by |
|---|
| 4148 | location :: Q Loc |
|---|
| 4149 | where Loc is a data type defined in TH.Syntax thus: |
|---|
| 4150 | data Loc |
|---|
| 4151 | = Loc { loc_filename :: String |
|---|
| 4152 | , loc_package :: String |
|---|
| 4153 | , loc_module :: String |
|---|
| 4154 | , loc_start :: CharPos |
|---|
| 4155 | , loc_end :: CharPos } |
|---|
| 4156 | |
|---|
| 4157 | type CharPos = (Int, Int) -- Line and character position |
|---|
| 4158 | |
|---|
| 4159 | So you get a lot more info from 'location' than from 'currentModule'. |
|---|
| 4160 | The location you get is the location of the splice. |
|---|
| 4161 | |
|---|
| 4162 | This works in Template Haskell too of course, and lets a TH program |
|---|
| 4163 | generate much better error messages. |
|---|
| 4164 | |
|---|
| 4165 | * There's also a new module in the template-haskell package called |
|---|
| 4166 | Language.Haskell.TH.Quote, which contains support code for the |
|---|
| 4167 | quasi-quoting feature. |
|---|
| 4168 | |
|---|
| 4169 | * Quasi-quote splices are run *in the renamer* because they can build |
|---|
| 4170 | *patterns* and hence the renamer needs to see the output of running the |
|---|
| 4171 | splice. This involved a bit of rejigging in the renamer, especially |
|---|
| 4172 | concerning the reporting of duplicate or shadowed names. |
|---|
| 4173 | |
|---|
| 4174 | (In fact I found and removed a few calls to checkDupNames in RnSource |
|---|
| 4175 | that are redundant, becuase top-level duplicate decls are handled in |
|---|
| 4176 | RnNames.) |
|---|
| 4177 | |
|---|
| 4178 | |
|---|
| 4179 | |
|---|
| 4180 | ] |
|---|
| 4181 | [lots of portability changes (#1405) |
|---|
| 4182 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20080117011312 |
|---|
| 4183 | |
|---|
| 4184 | re-recording to avoid new conflicts was too hard, so I just put it |
|---|
| 4185 | all in one big patch :-( (besides, some of the changes depended on |
|---|
| 4186 | each other.) Here are what the component patches were: |
|---|
| 4187 | |
|---|
| 4188 | Fri Dec 28 11:02:55 EST 2007 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4189 | * document BreakArray better |
|---|
| 4190 | |
|---|
| 4191 | Fri Dec 28 11:39:22 EST 2007 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4192 | * properly ifdef BreakArray for GHCI |
|---|
| 4193 | |
|---|
| 4194 | Fri Jan 4 13:50:41 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4195 | * change ifs on __GLASGOW_HASKELL__ to account for... (#1405) |
|---|
| 4196 | for it not being defined. I assume it being undefined implies |
|---|
| 4197 | a compiler with relatively modern libraries but without most |
|---|
| 4198 | unportable glasgow extensions. |
|---|
| 4199 | |
|---|
| 4200 | Fri Jan 4 14:21:21 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4201 | * MyEither-->EitherString to allow Haskell98 instance |
|---|
| 4202 | |
|---|
| 4203 | Fri Jan 4 16:13:29 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4204 | * re-portabilize Pretty, and corresponding changes |
|---|
| 4205 | |
|---|
| 4206 | Fri Jan 4 17:19:55 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4207 | * Augment FastTypes to be much more complete |
|---|
| 4208 | |
|---|
| 4209 | Fri Jan 4 20:14:19 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4210 | * use FastFunctions, cleanup FastString slightly |
|---|
| 4211 | |
|---|
| 4212 | Fri Jan 4 21:00:22 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4213 | * Massive de-"#", mostly Int# --> FastInt (#1405) |
|---|
| 4214 | |
|---|
| 4215 | Fri Jan 4 21:02:49 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4216 | * miscellaneous unnecessary-extension-removal |
|---|
| 4217 | |
|---|
| 4218 | Sat Jan 5 19:30:13 EST 2008 Isaac Dupree <id@isaac.cedarswampstudios.org> |
|---|
| 4219 | * add FastFunctions |
|---|
| 4220 | |
|---|
| 4221 | ] |
|---|
| 4222 | [Add missing extendSubst |
|---|
| 4223 | simonpj@microsoft.com**20080117180227 |
|---|
| 4224 | |
|---|
| 4225 | Oops -- missed this from previous commit; sorry |
|---|
| 4226 | |
|---|
| 4227 | ] |
|---|
| 4228 | [Add -fspec-inline-join-points to SpecConstr |
|---|
| 4229 | simonpj@microsoft.com**20080117150325 |
|---|
| 4230 | |
|---|
| 4231 | This patch addresses a problem that Roman found in SpecConstr. Consider: |
|---|
| 4232 | |
|---|
| 4233 | foo :: Maybe Int -> Maybe Int -> Int |
|---|
| 4234 | foo a b = let j b = foo a b |
|---|
| 4235 | in |
|---|
| 4236 | case b of |
|---|
| 4237 | Nothing -> ... |
|---|
| 4238 | Just n -> case a of |
|---|
| 4239 | Just m -> ... j (Just (n+1)) ... |
|---|
| 4240 | Nothing -> ... j (Just (n-1)) ... |
|---|
| 4241 | |
|---|
| 4242 | We want to make specialised versions for 'foo' for the patterns |
|---|
| 4243 | Nothing (Just v) |
|---|
| 4244 | (Just a) (Just b) |
|---|
| 4245 | |
|---|
| 4246 | Two problems, caused by the join point j. First, j does not |
|---|
| 4247 | scrutinise b, so j won't be specialised f for the (Just v) pattern. |
|---|
| 4248 | Second, j is defined where the free var 'a' is not evaluated. |
|---|
| 4249 | |
|---|
| 4250 | Both are solved by brutally inlining j at its call sites. This risks |
|---|
| 4251 | major code bloat, but it's relatively quick to implement. The flag |
|---|
| 4252 | -fspec-inline-join-points |
|---|
| 4253 | causes brutal inlining for a |
|---|
| 4254 | non-recursive binding |
|---|
| 4255 | of a function |
|---|
| 4256 | whose RHS contains calls |
|---|
| 4257 | of a recursive function |
|---|
| 4258 | |
|---|
| 4259 | The (experimental) flag is static for now, and I have not even |
|---|
| 4260 | documented it properly. |
|---|
| 4261 | |
|---|
| 4262 | |
|---|
| 4263 | ] |
|---|
| 4264 | [Fix references to Filepath |
|---|
| 4265 | Clemens Fruhwirth <clemens@endorphin.org>**20080117134139] |
|---|
| 4266 | [Fix egregious error in earlier "Record evaluated-ness" patch |
|---|
| 4267 | simonpj@microsoft.com**20080117134057] |
|---|
| 4268 | [Eliminate warnings with -DDEBUG |
|---|
| 4269 | simonpj@microsoft.com**20080117124921] |
|---|
| 4270 | [Record evaluated-ness information correctly for strict constructors |
|---|
| 4271 | simonpj@microsoft.com**20080117105256 |
|---|
| 4272 | |
|---|
| 4273 | The add_evals code in Simplify.simplAlt had bit-rotted. Example: |
|---|
| 4274 | |
|---|
| 4275 | data T a = T !a |
|---|
| 4276 | data U a = U !a |
|---|
| 4277 | |
|---|
| 4278 | foo :: T a -> U a |
|---|
| 4279 | foo (T x) = U x |
|---|
| 4280 | |
|---|
| 4281 | Here we should not evaluate x before building the U result, because |
|---|
| 4282 | the x argument of T is already evaluated. |
|---|
| 4283 | |
|---|
| 4284 | Thanks to Roman for finding this. |
|---|
| 4285 | |
|---|
| 4286 | |
|---|
| 4287 | ] |
|---|
| 4288 | [In float-out, make sure we abstract over the type variables in the kind of a coercion |
|---|
| 4289 | simonpj@microsoft.com**20080116153908 |
|---|
| 4290 | |
|---|
| 4291 | I can't remember where this bug showed up, but we were abstracting over a |
|---|
| 4292 | coercion variable (co :: a ~ T), without also abstracting over 'a'. |
|---|
| 4293 | |
|---|
| 4294 | The fix is simple. |
|---|
| 4295 | |
|---|
| 4296 | ] |
|---|
| 4297 | [Fix broken debug warning |
|---|
| 4298 | simonpj@microsoft.com**20080116151818] |
|---|
| 4299 | [Complain sensibly if you try to use scoped type variables in Template Haskell |
|---|
| 4300 | simonpj@microsoft.com**20080116151612 |
|---|
| 4301 | |
|---|
| 4302 | This fixes Trac #2024; worth merging onto 6.8 branch. |
|---|
| 4303 | |
|---|
| 4304 | ] |
|---|
| 4305 | [Comments only |
|---|
| 4306 | simonpj@microsoft.com**20080116150554] |
|---|
| 4307 | [Extra instance for Outputable on 5-tuples |
|---|
| 4308 | simonpj@microsoft.com**20080116150525] |
|---|
| 4309 | [Fix the -frule-check pass |
|---|
| 4310 | simonpj@microsoft.com**20080116141156 |
|---|
| 4311 | |
|---|
| 4312 | Rules for imported things are now kept in the global rule base, not |
|---|
| 4313 | attached to the global Id. The rule-check pass hadn't kept up. |
|---|
| 4314 | |
|---|
| 4315 | This should fix it. |
|---|
| 4316 | |
|---|
| 4317 | ] |
|---|
| 4318 | [Add dyn-wrapper.c used as cross-plattform launch wrapper for executables using dynamic libraries in non-standard places |
|---|
| 4319 | Clemens Fruhwirth <clemens@endorphin.org>**20080116220603] |
|---|
| 4320 | [Use runPhase_MoveBinary also for generating a dynamic library wrapper |
|---|
| 4321 | Clemens Fruhwirth <clemens@endorphin.org>**20080116220420] |
|---|
| 4322 | [Remove -fhardwire-lib-paths in favour of -dynload sysdep |
|---|
| 4323 | Clemens Fruhwirth <clemens@endorphin.org>**20080110121736] |
|---|
| 4324 | [ghc-inplace defaults to -fhardwire-lib-paths. Change that to -dynload wrapped |
|---|
| 4325 | Clemens Fruhwirth <clemens@endorphin.org>**20080110090839] |
|---|
| 4326 | [Add -dynload flag as dynamic flag. |
|---|
| 4327 | Clemens Fruhwirth <clemens@endorphin.org>**20080116205710] |
|---|
| 4328 | [Add a missing import |
|---|
| 4329 | Ian Lynagh <igloo@earth.li>**20080116174149] |
|---|
| 4330 | [Fix Makefile generatin on Windows |
|---|
| 4331 | Ian Lynagh <igloo@earth.li>**20080116162752] |
|---|
| 4332 | [Fix slash direction on Windows with the new filePath code |
|---|
| 4333 | Ian Lynagh <igloo@earth.li>**20080116154317] |
|---|
| 4334 | [Fix typo |
|---|
| 4335 | Ian Lynagh <igloo@earth.li>**20080116011953] |
|---|
| 4336 | [The Core type-matcher should look through PredTypes |
|---|
| 4337 | simonpj@microsoft.com**20080116145939 |
|---|
| 4338 | |
|---|
| 4339 | The core type-matcher Unify.match was previouly using tcView to expand |
|---|
| 4340 | types, because it must treat newtypes as distinct from their representation. |
|---|
| 4341 | But that meant that it also treated the PredType {C Int} as distinct from |
|---|
| 4342 | its representation type (:TC Int). And that in turn was causing a rule |
|---|
| 4343 | not to fire, because the argument types didn't match up. |
|---|
| 4344 | |
|---|
| 4345 | For this to happen we need to get a situation where we have |
|---|
| 4346 | |
|---|
| 4347 | a = :DC blah blah -- Dictionary |
|---|
| 4348 | ....(f a)..... |
|---|
| 4349 | |
|---|
| 4350 | Now a has type (:TC Int), bu the RULE for f expects an argument |
|---|
| 4351 | of type {C Int}. Roman found that just this was happening. |
|---|
| 4352 | |
|---|
| 4353 | |
|---|
| 4354 | |
|---|
| 4355 | |
|---|
| 4356 | ] |
|---|
| 4357 | [A bottoming function should have infinite arity |
|---|
| 4358 | simonpj@microsoft.com**20080116145722 |
|---|
| 4359 | |
|---|
| 4360 | I can't think how this one escaped for so long, but |
|---|
| 4361 | (error "foo") |
|---|
| 4362 | should have arityType ABot, just as 'error' itself does. |
|---|
| 4363 | |
|---|
| 4364 | This improves eta expansion. I spotted it when looking at the function |
|---|
| 4365 | |
|---|
| 4366 | Data.Array.Parallel.Arr.BBArr.writeMBB |
|---|
| 4367 | |
|---|
| 4368 | in the ndp package. |
|---|
| 4369 | |
|---|
| 4370 | |
|---|
| 4371 | ] |
|---|
| 4372 | [Add Main.dyn_o deployed into the RTS library dir to linking (see DLLNOTES for rational) |
|---|
| 4373 | Clemens Fruhwirth <clemens@endorphin.org>**20080110091217] |
|---|
| 4374 | [Refactor cross-plattform process spawning from ghc-inplace into shell-tools.c |
|---|
| 4375 | Clemens Fruhwirth <clemens@endorphin.org>**20080110090721] |
|---|
| 4376 | [More verbose error reporting in mk/target.mk |
|---|
| 4377 | Clemens Fruhwirth <clemens@endorphin.org>**20071231170715] |
|---|
| 4378 | [Fix generating dependencies for different ways now we use FilePath |
|---|
| 4379 | Ian Lynagh <igloo@earth.li>**20080115204716 |
|---|
| 4380 | We were making filenames like |
|---|
| 4381 | dist/build/GHC/Base.p_.o |
|---|
| 4382 | rather than |
|---|
| 4383 | dist/build/GHC/Base.p_o |
|---|
| 4384 | ] |
|---|
| 4385 | [Fix utils/Util for debug build |
|---|
| 4386 | mainland@eecs.harvard.edu**20080114190530] |
|---|
| 4387 | [Give an error if view pattern syntax is used in an expression; fixes #2033 |
|---|
| 4388 | Ian Lynagh <igloo@earth.li>**20080114115031] |
|---|
| 4389 | [FIX BUILD (Solaris): include fcntl.h for file operations |
|---|
| 4390 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080115051844] |
|---|
| 4391 | [Fix warning when USE_READLINE is unset |
|---|
| 4392 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080115015014] |
|---|
| 4393 | [Remove an extra ) that was breaking the build on Windows |
|---|
| 4394 | Ian Lynagh <igloo@earth.li>**20080114103953] |
|---|
| 4395 | [Fix warnings in utils/ListSetOps |
|---|
| 4396 | Ian Lynagh <igloo@earth.li>**20080113150017] |
|---|
| 4397 | [Fix warnings in utils/Panic |
|---|
| 4398 | Ian Lynagh <igloo@earth.li>**20080113142939] |
|---|
| 4399 | [Fix warnings in utils/UniqSet |
|---|
| 4400 | Ian Lynagh <igloo@earth.li>**20080113142604] |
|---|
| 4401 | [Fix warnings in utils/Maybes |
|---|
| 4402 | Ian Lynagh <igloo@earth.li>**20080113142347] |
|---|
| 4403 | [Fix warnings in utils/BufWrite |
|---|
| 4404 | Ian Lynagh <igloo@earth.li>**20080113141630] |
|---|
| 4405 | [Fix warnings in utils/FastTypes |
|---|
| 4406 | Ian Lynagh <igloo@earth.li>**20080113141612 |
|---|
| 4407 | Split off a FastBool module, to avoid a circular import with Panic |
|---|
| 4408 | ] |
|---|
| 4409 | [Fix warnings in utils/OrdList |
|---|
| 4410 | Ian Lynagh <igloo@earth.li>**20080113132042] |
|---|
| 4411 | [Fix warnings in utils/FastMutInt |
|---|
| 4412 | Ian Lynagh <igloo@earth.li>**20080113131830] |
|---|
| 4413 | [Fix warnings in utils/State |
|---|
| 4414 | Ian Lynagh <igloo@earth.li>**20080113131658] |
|---|
| 4415 | [Only initialise readline if we are connected to a terminal |
|---|
| 4416 | Ian Lynagh <igloo@earth.li>**20080113124107 |
|---|
| 4417 | Patch from Bertram Felgenhauer <int-e@gmx.de> |
|---|
| 4418 | ] |
|---|
| 4419 | [Fix warnings in utils/Util |
|---|
| 4420 | Ian Lynagh <igloo@earth.li>**20080113005832] |
|---|
| 4421 | [Fix warnings in utils/Bag.lhs |
|---|
| 4422 | Ian Lynagh <igloo@earth.li>**20080113002037] |
|---|
| 4423 | [Add GMP_INCLUDE_DIRS in a couple of places |
|---|
| 4424 | Ian Lynagh <igloo@earth.li>**20080112234215 |
|---|
| 4425 | Fixes the build on OpenBSD (trac #2009). Based on a patch from kili. |
|---|
| 4426 | ] |
|---|
| 4427 | [Tweak whitespace in HsExpr |
|---|
| 4428 | Ian Lynagh <igloo@earth.li>**20080112185753] |
|---|
| 4429 | [Fix warnings in HsExpr |
|---|
| 4430 | Ian Lynagh <igloo@earth.li>**20080112181444] |
|---|
| 4431 | [FilePath fixes |
|---|
| 4432 | Ian Lynagh <igloo@earth.li>**20080112172837] |
|---|
| 4433 | [don't initialize readline needlessly |
|---|
| 4434 | Ian Lynagh <igloo@earth.li>**20080112155413 |
|---|
| 4435 | Readline.initialize spills some escape sequences to stdout for some terminal |
|---|
| 4436 | types, potentially spoiling ghc -e output. So don't initialize readline |
|---|
| 4437 | unless we're working interactively on a terminal. |
|---|
| 4438 | Patch from Bertram Felgenhauer <int-e@gmx.de> |
|---|
| 4439 | ] |
|---|
| 4440 | [Fix whitespace |
|---|
| 4441 | Ian Lynagh <igloo@earth.li>**20080112155214] |
|---|
| 4442 | [Use System.FilePath |
|---|
| 4443 | Ian Lynagh <igloo@earth.li>**20080112154459] |
|---|
| 4444 | [Fix filename completion by adding trailing spaces/slashes manually. |
|---|
| 4445 | judah.jacobson@gmail.com**20080110221928] |
|---|
| 4446 | [Use command-dependent word break characters for tab completion in ghci. Fixes bug #998. |
|---|
| 4447 | judah.jacobson@gmail.com**20080109003606] |
|---|
| 4448 | [Fix 2030: make -XScopedTypeVariables imply -XRelaxedPolyRec |
|---|
| 4449 | simonpj@microsoft.com**20080110113133 |
|---|
| 4450 | |
|---|
| 4451 | The type checker doesn't support lexically scoped type variables |
|---|
| 4452 | unless we are using the RelaxedPolyRec option. Reasons: see |
|---|
| 4453 | Note [Scoped tyvars] in TcBinds. |
|---|
| 4454 | |
|---|
| 4455 | So I've changed DynFlags to add this implication, improved the |
|---|
| 4456 | documentation, and simplified the code in TcBinds somewhat. |
|---|
| 4457 | (It's longer but only because of comments!) |
|---|
| 4458 | |
|---|
| 4459 | |
|---|
| 4460 | ] |
|---|
| 4461 | [More refactoring in getCoreToDo |
|---|
| 4462 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109023747] |
|---|
| 4463 | [Document -fsimplifier-phases |
|---|
| 4464 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109022822] |
|---|
| 4465 | [Add -fsimplifier-phases option |
|---|
| 4466 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109022449 |
|---|
| 4467 | |
|---|
| 4468 | It controls the number of simplifier phases run during optimisation. These are |
|---|
| 4469 | numbered from n to 1 (by default, n=2). Phase 0 is always run regardless of |
|---|
| 4470 | this flag. The flag is ignored with -O0 since (practically) no optimisation is |
|---|
| 4471 | performed in that case. |
|---|
| 4472 | ] |
|---|
| 4473 | [Refactor getCoreToDo slightly |
|---|
| 4474 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109014359] |
|---|
| 4475 | [Fix Trac #2018: float-out was ignoring the kind of a coercion variable |
|---|
| 4476 | simonpj@microsoft.com**20080107142601 |
|---|
| 4477 | |
|---|
| 4478 | The float-out transformation must handle the case where a coercion |
|---|
| 4479 | variable is free, which in turn mentions type variables in its kind. |
|---|
| 4480 | Just like a term variable really. |
|---|
| 4481 | |
|---|
| 4482 | I did a bit of refactoring at the same time. |
|---|
| 4483 | |
|---|
| 4484 | Test is tc241 |
|---|
| 4485 | |
|---|
| 4486 | MERGE to stable branch |
|---|
| 4487 | |
|---|
| 4488 | ] |
|---|
| 4489 | [Make the treatment of equalities more uniform |
|---|
| 4490 | simonpj@microsoft.com**20080107142306 |
|---|
| 4491 | |
|---|
| 4492 | This patch (which is part of the fix for Trac #2018) makes coercion variables |
|---|
| 4493 | be handled more uniformly. Generally, they are treated like dictionaries |
|---|
| 4494 | in the type checker, not like type variables, but in a couple of places we |
|---|
| 4495 | were treating them like type variables. Also when zonking we should use |
|---|
| 4496 | zonkDictBndr not zonkIdBndr. |
|---|
| 4497 | |
|---|
| 4498 | ] |
|---|
| 4499 | [Fix Trac #2017 |
|---|
| 4500 | simonpj@microsoft.com**20080107125819] |
|---|
| 4501 | [Add -XImpredicativeTypes, and tighten up type-validity checking (cf Trac 2019) |
|---|
| 4502 | simonpj@microsoft.com**20080107115451 |
|---|
| 4503 | |
|---|
| 4504 | Somehow we didn't have a separate flag for impredicativity; now we do. |
|---|
| 4505 | |
|---|
| 4506 | Furthermore, Trac #2019 showed up a missing test for monotypes in data |
|---|
| 4507 | constructor return types. And I realised that we were even allowing |
|---|
| 4508 | things like |
|---|
| 4509 | Num (forall a. a) => ... |
|---|
| 4510 | which we definitely should not. |
|---|
| 4511 | |
|---|
| 4512 | This patch insists on monotypes in several places where we were (wrongly) |
|---|
| 4513 | too liberal before. |
|---|
| 4514 | |
|---|
| 4515 | Could be merged to 6.8 but no big deal. |
|---|
| 4516 | |
|---|
| 4517 | |
|---|
| 4518 | ] |
|---|
| 4519 | [pass -no-user-package-conf to ghc-inplace |
|---|
| 4520 | Simon Marlow <simonmar@microsoft.com>**20080104162840] |
|---|
| 4521 | [Fix build: Recent instance shuffling left us with overlapping instances |
|---|
| 4522 | Ian Lynagh <igloo@earth.li>**20080106221547] |
|---|
| 4523 | [Add instructions for building docs to README |
|---|
| 4524 | Ian Lynagh <igloo@earth.li>**20080106215723] |
|---|
| 4525 | [A little refactoring of GenIfaceEq to make the Outputable instance into H98 |
|---|
| 4526 | simonpj@microsoft.com**20080104105450] |
|---|
| 4527 | [Make the instance of DebugNodes more H98-like |
|---|
| 4528 | simonpj@microsoft.com**20080104105409] |
|---|
| 4529 | [change CmmActual, CmmFormal to use a data CmmHinted rather than tuple (#1405) |
|---|
| 4530 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20080104105339 |
|---|
| 4531 | This allows the instance of UserOfLocalRegs to be within Haskell98, and IMHO |
|---|
| 4532 | makes the code a little cleaner generally. |
|---|
| 4533 | This is one small (though tedious) step towards making GHC's code more |
|---|
| 4534 | portable... |
|---|
| 4535 | ] |
|---|
| 4536 | [generalize instance Outputable GenCmm to H98 (#1405) |
|---|
| 4537 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20071226175915] |
|---|
| 4538 | [move and generalize another instance (#1405) |
|---|
| 4539 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20071226174904 |
|---|
| 4540 | was instance Outputable CmmGraph |
|---|
| 4541 | type CmmGraph = LGraph Middle Last |
|---|
| 4542 | now instance (ctx) => Outputable (LGraph m l), |
|---|
| 4543 | in module with LGraph where it belongs |
|---|
| 4544 | This also let us reduce the context of DebugNodes to Haskell98, |
|---|
| 4545 | leaving that class's only extension being multi-parameter. |
|---|
| 4546 | (also Outputable (LGraph M Last) with M = ExtendWithSpills Middle |
|---|
| 4547 | was another redundant instance that was then removed) |
|---|
| 4548 | ] |
|---|
| 4549 | [move and generalize an instance (#1405) |
|---|
| 4550 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20071226171913 |
|---|
| 4551 | UserOfLocalRegs (ZLast Last) isn't Haskell98, but it was just as |
|---|
| 4552 | good an instance to be UserOfLocalRegs a => UserOfLocalRegs (ZLast a) |
|---|
| 4553 | ] |
|---|
| 4554 | [Do not consult -XGADTs flag when pattern matching on GADTs |
|---|
| 4555 | simonpj@microsoft.com**20080104125814 |
|---|
| 4556 | |
|---|
| 4557 | See Trac #2004, and Note [Flags and equational constraints] in TcPat. |
|---|
| 4558 | |
|---|
| 4559 | ] |
|---|
| 4560 | [Add a note about primop wrappers (cf Trac #1509) |
|---|
| 4561 | simonpj@microsoft.com**20080104125305] |
|---|
| 4562 | [Document SOURCE pragma; clarify TH behavior for mutually-recurive modules (Trac #1012) |
|---|
| 4563 | simonpj@microsoft.com**20080104121939] |
|---|
| 4564 | [White space and comments only |
|---|
| 4565 | simonpj@microsoft.com**20080104102236] |
|---|
| 4566 | [Optionally use libffi to implement 'foreign import "wrapper"' (#793) |
|---|
| 4567 | Simon Marlow <simonmar@microsoft.com>**20080103170236 |
|---|
| 4568 | To enable this, set UseLibFFI=YES in mk/build.mk. |
|---|
| 4569 | |
|---|
| 4570 | The main advantage here is that this reduces the porting effort for |
|---|
| 4571 | new platforms: libffi works on more architectures than our current |
|---|
| 4572 | adjustor code, and it is probably more heavily tested. We could |
|---|
| 4573 | potentially replace our existing code, but since it is probably faster |
|---|
| 4574 | than libffi (just a guess, I'll measure later) and is already working, |
|---|
| 4575 | it doesn't seem worthwhile. |
|---|
| 4576 | |
|---|
| 4577 | Right now, you must have libffi installed on your system. I used the |
|---|
| 4578 | one supplied by Debian/Ubuntu. |
|---|
| 4579 | ] |
|---|
| 4580 | [remove trace apparently left in by accident |
|---|
| 4581 | Simon Marlow <simonmar@microsoft.com>**20080103163805] |
|---|
| 4582 | [Remove -funfolding-update-in-place flag documentation |
|---|
| 4583 | simonpj@microsoft.com**20080103160036 |
|---|
| 4584 | |
|---|
| 4585 | This flag does nothing, and should have been removed ages ago. (GHC |
|---|
| 4586 | no longer does update-in-place.) |
|---|
| 4587 | |
|---|
| 4588 | MERGE to 6.8 branch |
|---|
| 4589 | |
|---|
| 4590 | ] |
|---|
| 4591 | [Fix warnings with newer gcc versions (I hope) |
|---|
| 4592 | Simon Marlow <simonmar@microsoft.com>**20080103140338] |
|---|
| 4593 | [FIX #1898: add a missing UNTAG_CLOSURE() in checkBlackHoles |
|---|
| 4594 | Simon Marlow <simonmar@microsoft.com>**20080103112717] |
|---|
| 4595 | [fix validation failure on non-i386 |
|---|
| 4596 | Simon Marlow <simonmar@microsoft.com>**20080102151740] |
|---|
| 4597 | [expand "out of stack slots" panic to suggest using -fregs-graph, see #1993 |
|---|
| 4598 | Simon Marlow <simonmar@microsoft.com>**20080102150737] |
|---|
| 4599 | [Warning clean, and fix compilation with GHC 6.2.x |
|---|
| 4600 | Simon Marlow <simonmar@microsoft.com>**20080102114529] |
|---|
| 4601 | [Add dead code elimination in cmmMiniInline |
|---|
| 4602 | Simon Marlow <simonmar@microsoft.com>**20071220151734 |
|---|
| 4603 | cmmMiniInline counts the uses of local variables, so it can easily |
|---|
| 4604 | eliminate assigments to unused locals. This almost never gets |
|---|
| 4605 | triggered, as we don't generate any dead assignments, but it will be |
|---|
| 4606 | needed by a forthcoming cleanup in CgUtils.emitSwitch. |
|---|
| 4607 | ] |
|---|
| 4608 | [implement prefix unboxed tuples (part of #1509) |
|---|
| 4609 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20080102124001] |
|---|
| 4610 | [Link libgmp.a statically into libHSrts.dll on Windows |
|---|
| 4611 | Clemens Fruhwirth <clemens@endorphin.org>**20080101154017] |
|---|
| 4612 | [Embedd DLL name into its import library, so client libs reference them properly in .idata |
|---|
| 4613 | Clemens Fruhwirth <clemens@endorphin.org>**20080101152157] |
|---|
| 4614 | [Add package dependencies to link pass when building ghc package (required for windows DLL build) |
|---|
| 4615 | Clemens Fruhwirth <clemens@endorphin.org>**20080101152101] |
|---|
| 4616 | [Fix building libHSrts.dll by using ghc-pkg instead of grepping in base.cabal |
|---|
| 4617 | Clemens Fruhwirth <clemens@endorphin.org>**20071230193952] |
|---|
| 4618 | [Add installPackage to dependencies of make.library.* as it's used by the rule |
|---|
| 4619 | Clemens Fruhwirth <clemens@endorphin.org>**20071229162707] |
|---|
| 4620 | [Install dynlibs correctly |
|---|
| 4621 | Clemens Fruhwirth <clemens@endorphin.org>**20071228184024 |
|---|
| 4622 | |
|---|
| 4623 | Add dynlibdir target to config.mk.in, setting it to @libdir@. |
|---|
| 4624 | Invoke installPackage with dynlibdir at libraries/Makefile |
|---|
| 4625 | Make installPackage.hs hand dynlibdir to Cabal. |
|---|
| 4626 | ] |
|---|
| 4627 | [import ord that alex secretly imported |
|---|
| 4628 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20071228175727] |
|---|
| 4629 | [add missing import that happy -agc secretly provided |
|---|
| 4630 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20071227171335] |
|---|
| 4631 | [correct type mistake, hidden by happy -agc coercions! |
|---|
| 4632 | Isaac Dupree <id@isaac.cedarswampstudios.org>**20071226140743] |
|---|
| 4633 | [API changes for cabal-HEAD |
|---|
| 4634 | Clemens Fruhwirth <clemens@endorphin.org>**20071227143114 |
|---|
| 4635 | |
|---|
| 4636 | Rename interfacedir to haddockdir |
|---|
| 4637 | Change empty(Copy|Register)Flags to default(Copy|Register)Flags |
|---|
| 4638 | Wrap content of RegisterFlags with toFlag (the Flag type is actually just Maybe) |
|---|
| 4639 | ] |
|---|
| 4640 | [Extend API for compiling to and from Core |
|---|
| 4641 | Tim Chevalier <chevalier@alum.wellesley.edu>**20071225200411 |
|---|
| 4642 | |
|---|
| 4643 | Added API support for compiling Haskell to simplified Core, and for |
|---|
| 4644 | compiling Core to machine code. The latter, especially, should be |
|---|
| 4645 | considered experimental and has only been given cursory testing. Also |
|---|
| 4646 | fixed warnings in DriverPipeline. Merry Christmas. |
|---|
| 4647 | ] |
|---|
| 4648 | [When complaining about non-rigid context, give suggestion of adding a signature |
|---|
| 4649 | simonpj@microsoft.com**20071224122217] |
|---|
| 4650 | [Improve handling of newtypes (fixes Trac 1495) |
|---|
| 4651 | simonpj@microsoft.com**20071221090406 |
|---|
| 4652 | |
|---|
| 4653 | In a few places we want to "look through" newtypes to get to the |
|---|
| 4654 | representation type. But we need to be careful that we don't fall |
|---|
| 4655 | into an ininite loop with e.g. |
|---|
| 4656 | newtype T = MkT T |
|---|
| 4657 | |
|---|
| 4658 | The old mechansim for doing this was to have a field nt_rep, inside |
|---|
| 4659 | a newtype TyCon, that gave the "ultimate representation" of the type. |
|---|
| 4660 | But that failed for Trac 1495, which looked like this: |
|---|
| 4661 | newtype Fix a = Fix (a (Fix a)) |
|---|
| 4662 | data I a = I a |
|---|
| 4663 | Then, expanding the type (Fix I) went on for ever. |
|---|
| 4664 | |
|---|
| 4665 | The right thing to do seems to be to check for loops when epxanding |
|---|
| 4666 | the *type*, rather than in the *tycon*. This patch does that, |
|---|
| 4667 | - Removes nt_rep from TyCon |
|---|
| 4668 | - Make Type.repType check for loops |
|---|
| 4669 | See Note [Expanding newtypes] in Type.lhs. |
|---|
| 4670 | |
|---|
| 4671 | At the same time I also fixed a bug for Roman, where newtypes were not |
|---|
| 4672 | being expanded properly in FamInstEnv.topNormaliseType. This function |
|---|
| 4673 | and Type.repType share a common structure. |
|---|
| 4674 | |
|---|
| 4675 | |
|---|
| 4676 | Ian, see if this merges easily to the branch |
|---|
| 4677 | If not, I don't think it's essential to fix 6.8 |
|---|
| 4678 | |
|---|
| 4679 | ] |
|---|
| 4680 | [Fix Trac #1981: seq on a type-family-typed expression |
|---|
| 4681 | simonpj@microsoft.com**20071221085542 |
|---|
| 4682 | |
|---|
| 4683 | We were crashing when we saw |
|---|
| 4684 | case x of DEFAULT -> rhs |
|---|
| 4685 | where x had a type-family type. This patch fixes it. |
|---|
| 4686 | |
|---|
| 4687 | MERGE to the 6.8 branch. |
|---|
| 4688 | |
|---|
| 4689 | |
|---|
| 4690 | ] |
|---|
| 4691 | [Comment only |
|---|
| 4692 | simonpj@microsoft.com**20071220164621] |
|---|
| 4693 | [Fix nasty recompilation bug in MkIface.computeChangedOccs |
|---|
| 4694 | simonpj@microsoft.com**20071220164307 |
|---|
| 4695 | |
|---|
| 4696 | MERGE to 6.8 branch |
|---|
| 4697 | |
|---|
| 4698 | In computeChangedOccs we look up the old version of a Name. |
|---|
| 4699 | But a WiredIn Name doesn't have an old version, because WiredIn things |
|---|
| 4700 | don't appear in interface files at all. |
|---|
| 4701 | |
|---|
| 4702 | Result: ghc-6.9: panic! (the 'impossible' happened) |
|---|
| 4703 | (GHC version 6.9 for x86_64-unknown-linux): |
|---|
| 4704 | lookupVers1 base:GHC.Prim chr#{v} |
|---|
| 4705 | |
|---|
| 4706 | This fixes the problem. The patch should merge easily onto the branch. |
|---|
| 4707 | |
|---|
| 4708 | |
|---|
| 4709 | ] |
|---|
| 4710 | [Fix Trac #1988; keep the ru_fn field of a RULE up to date |
|---|
| 4711 | simonpj@microsoft.com**20071220131912 |
|---|
| 4712 | |
|---|
| 4713 | The ru_fn field was wrong when we moved RULES from one Id to another. |
|---|
| 4714 | The fix is simple enough. |
|---|
| 4715 | |
|---|
| 4716 | However, looking at this makes me realise that the worker/wrapper stuff |
|---|
| 4717 | for recursive newtypes isn't very clever: we generate demand info but |
|---|
| 4718 | then don't properly exploit it. |
|---|
| 4719 | |
|---|
| 4720 | This patch fixes the crash though. |
|---|
| 4721 | |
|---|
| 4722 | ] |
|---|
| 4723 | [Add better panic message in getSRTInfo (Trac #1973) |
|---|
| 4724 | simonpj@microsoft.com**20071220180335] |
|---|
| 4725 | [Remove obselete code for update-in-place (which we no longer do) |
|---|
| 4726 | simonpj@microsoft.com**20071220173432] |
|---|
| 4727 | [Implement generalised list comprehensions |
|---|
| 4728 | simonpj@microsoft.com**20071220111300 |
|---|
| 4729 | |
|---|
| 4730 | This patch implements generalised list comprehensions, as described in |
|---|
| 4731 | the paper "Comprehensive comprehensions" (Peyton Jones & Wadler, Haskell |
|---|
| 4732 | Workshop 2007). If you don't use the new comprehensions, nothing |
|---|
| 4733 | should change. |
|---|
| 4734 | |
|---|
| 4735 | The syntax is not exactly as in the paper; see the user manual entry |
|---|
| 4736 | for details. |
|---|
| 4737 | |
|---|
| 4738 | You need an accompanying patch to the base library for this stuff |
|---|
| 4739 | to work. |
|---|
| 4740 | |
|---|
| 4741 | The patch is the work of Max Bolingbroke [batterseapower@hotmail.com], |
|---|
| 4742 | with some advice from Simon PJ. |
|---|
| 4743 | |
|---|
| 4744 | The related GHC Wiki page is |
|---|
| 4745 | http://hackage.haskell.org/trac/ghc/wiki/SQLLikeComprehensions |
|---|
| 4746 | |
|---|
| 4747 | ] |
|---|
| 4748 | [More bindist-publishing fixes and refactoring |
|---|
| 4749 | Ian Lynagh <igloo@earth.li>**20071218144505] |
|---|
| 4750 | [Fix publishing the docs |
|---|
| 4751 | Ian Lynagh <igloo@earth.li>**20071216122544] |
|---|
| 4752 | [FIX #1980: must check for ThreadRelocated in killThread# |
|---|
| 4753 | Simon Marlow <simonmar@microsoft.com>**20071217164610] |
|---|
| 4754 | [Eliminate external GMP dependencies |
|---|
| 4755 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20071217093839 |
|---|
| 4756 | - Ensure the stage1 compiler uses ghc's own GMP library on Mac OS |
|---|
| 4757 | - Need to rebuild installPackage and ifBuildable with stage1 compiler as they |
|---|
| 4758 | go into bindists |
|---|
| 4759 | ] |
|---|
| 4760 | [Include ~/Library/Frameworks in the framework searchpath |
|---|
| 4761 | Ian Lynagh <igloo@earth.li>**20071217233457 |
|---|
| 4762 | Patch from Christian Maeder |
|---|
| 4763 | ] |
|---|
| 4764 | [Make ghcii.sh executable |
|---|
| 4765 | Ian Lynagh <igloo@earth.li>**20071217195734] |
|---|
| 4766 | [Don't rely on distrib/prep-bin-dist-mingw being executable |
|---|
| 4767 | Ian Lynagh <igloo@earth.li>**20071217195554] |
|---|
| 4768 | [always try to remove the new file before restoring the old one (#1963) |
|---|
| 4769 | Simon Marlow <simonmar@microsoft.com>**20071214123345] |
|---|
| 4770 | [Fix a bug in gen_contents_index |
|---|
| 4771 | Ian Lynagh <igloo@earth.li>**20071212121154 |
|---|
| 4772 | The library doc index thought that the docs were in $module.html, rather |
|---|
| 4773 | than $package/$module.html. |
|---|
| 4774 | ] |
|---|
| 4775 | [Fix lifting of case expressions |
|---|
| 4776 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071215000837 |
|---|
| 4777 | |
|---|
| 4778 | We have to explicity check for empty arrays in each alternative as recursive |
|---|
| 4779 | algorithms wouldn't terminate otherwise. |
|---|
| 4780 | ] |
|---|
| 4781 | [Use (UArr Int) instead of PArray_Int# in vectorisation |
|---|
| 4782 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071215000739] |
|---|
| 4783 | [Fix bug in VectInfo loading |
|---|
| 4784 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214230914] |
|---|
| 4785 | [Remove unused vectorisation built-in |
|---|
| 4786 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214011015] |
|---|
| 4787 | [Treat some standard data cons specially during vectorisation |
|---|
| 4788 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213034855 |
|---|
| 4789 | |
|---|
| 4790 | This is a temporary hack which allows us to vectorise literals. |
|---|
| 4791 | ] |
|---|
| 4792 | [More vectorisation-related built ins |
|---|
| 4793 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213034839] |
|---|
| 4794 | [Track changes to package ndp |
|---|
| 4795 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071212062714] |
|---|
| 4796 | [Add vectorisation built-ins |
|---|
| 4797 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071212040521] |
|---|
| 4798 | [FIX #1963: catch Ctrl-C and clean up properly |
|---|
| 4799 | Simon Marlow <simonmar@microsoft.com>**20071213154056] |
|---|
| 4800 | [Document the new threshold flags |
|---|
| 4801 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214003003] |
|---|
| 4802 | [Separate and optional size thresholds for SpecConstr and LiberateCase |
|---|
| 4803 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214002719 |
|---|
| 4804 | |
|---|
| 4805 | This patch replaces -fspec-threshold by -fspec-constr-threshold and |
|---|
| 4806 | -fliberate-case-threshold. The thresholds can be disabled by |
|---|
| 4807 | -fno-spec-constr-threshold and -fno-liberate-case-threshold. |
|---|
| 4808 | ] |
|---|
| 4809 | [Make HscTypes.tyThingId respond not panic on ADataCon |
|---|
| 4810 | simonpj@microsoft.com**20071204152903] |
|---|
| 4811 | [Use Unix format for RnPat (no other change) |
|---|
| 4812 | simonpj@microsoft.com**20071213140532] |
|---|
| 4813 | [Improve free-variable handling for rnPat and friends (fixes Trac #1972) |
|---|
| 4814 | simonpj@microsoft.com**20071213140213 |
|---|
| 4815 | |
|---|
| 4816 | As well as fixing the immediate problem (Trac #1972) this patch does |
|---|
| 4817 | a signficant simplification and refactoring of pattern renaming. |
|---|
| 4818 | |
|---|
| 4819 | Fewer functions, fewer parameters passed....it's all good. But it |
|---|
| 4820 | took much longer than I expected to figure out. |
|---|
| 4821 | |
|---|
| 4822 | The most significant change is that the NameMaker type does *binding* |
|---|
| 4823 | as well as *making* and, in the matchNameMaker case, checks for unused |
|---|
| 4824 | bindings as well. This is much tider. |
|---|
| 4825 | |
|---|
| 4826 | (No need to merge to the 6.8 branch, but no harm either.) |
|---|
| 4827 | |
|---|
| 4828 | |
|---|
| 4829 | ] |
|---|
| 4830 | [Allow more than 3 simplifier iterations to be run in phase 0 |
|---|
| 4831 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213040835 |
|---|
| 4832 | |
|---|
| 4833 | The number of iterations during the first run of phase 0 was erroneously |
|---|
| 4834 | hardcoded to 3. It should be *at least* 3 (see comments in code) but can be |
|---|
| 4835 | more. |
|---|
| 4836 | ] |
|---|
| 4837 | [Document -ddump-simpl-phases |
|---|
| 4838 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213040822] |
|---|
| 4839 | [New flag: -ddump-simpl-phases |
|---|
| 4840 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213040644 |
|---|
| 4841 | |
|---|
| 4842 | This outputs the core after each simplifier phase (i.e., it produces less |
|---|
| 4843 | information that -ddump-simpl-iterations). |
|---|
| 4844 | ] |
|---|
| 4845 | [Don't dump simplifier iterations with -dverbose-core2core |
|---|
| 4846 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213034635 |
|---|
| 4847 | |
|---|
| 4848 | SimonPJ says this is the correct behaviour. We still have |
|---|
| 4849 | -ddump-simpl-iterations. |
|---|
| 4850 | ] |
|---|
| 4851 | ["list --simple-output" should be quiet when there are no packages to list |
|---|
| 4852 | Simon Marlow <simonmar@microsoft.com>**20071212102230 |
|---|
| 4853 | |
|---|
| 4854 | Previously: |
|---|
| 4855 | |
|---|
| 4856 | $ ghc-pkg list --user --simple-output |
|---|
| 4857 | ghc-pkg: no matches |
|---|
| 4858 | $ |
|---|
| 4859 | |
|---|
| 4860 | Now: |
|---|
| 4861 | |
|---|
| 4862 | $ ghc-pkg list --user --simple-output |
|---|
| 4863 | $ |
|---|
| 4864 | ] |
|---|
| 4865 | [Fix vectorisation bug |
|---|
| 4866 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071206233015] |
|---|
| 4867 | [Vectorisation-related built ins |
|---|
| 4868 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071206040829] |
|---|
| 4869 | [Teach vectorisation about some temporary conversion functions |
|---|
| 4870 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071206032547] |
|---|
| 4871 | [Vectorise case of unit correctly |
|---|
| 4872 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205221305] |
|---|
| 4873 | [Teach vectorisation about singletonP |
|---|
| 4874 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205221240] |
|---|
| 4875 | [Optimise desugaring of parallel array comprehensions |
|---|
| 4876 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205221213] |
|---|
| 4877 | [Teach vectorisation about tuple datacons |
|---|
| 4878 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205050221] |
|---|
| 4879 | [Track additions to package ndp |
|---|
| 4880 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205042649] |
|---|
| 4881 | [Track changes to package ndp |
|---|
| 4882 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205033859] |
|---|
| 4883 | [Improve pretty-printing of InstDecl |
|---|
| 4884 | simonpj@microsoft.com**20071210083053 |
|---|
| 4885 | |
|---|
| 4886 | Fixes Trac #1966. |
|---|
| 4887 | |
|---|
| 4888 | ] |
|---|
| 4889 | [Comments only |
|---|
| 4890 | Pepe Iborra <mnislaih@gmail.com>**20071208204815] |
|---|
| 4891 | [Refactoring only |
|---|
| 4892 | Pepe Iborra <mnislaih@gmail.com>**20071208195222 |
|---|
| 4893 | |
|---|
| 4894 | Suspensions in the Term datatype used for RTTI |
|---|
| 4895 | always get assigned a Type, so there is no reason |
|---|
| 4896 | to juggle around with a (Maybe Type) anymore. |
|---|
| 4897 | |
|---|
| 4898 | ] |
|---|
| 4899 | [Change the format used by :print to show the content of references |
|---|
| 4900 | Pepe Iborra <mnislaih@gmail.com>**20071208193013 |
|---|
| 4901 | |
|---|
| 4902 | This comes as result of the short discussion linked below. |
|---|
| 4903 | |
|---|
| 4904 | http://www.haskell.org/pipermail/cvs-ghc/2007-December/040049.html |
|---|
| 4905 | |
|---|
| 4906 | ] |
|---|
| 4907 | [Help the user when she tries to do :history without :trace |
|---|
| 4908 | Pepe Iborra <mnislaih@gmail.com>**20071208180918 |
|---|
| 4909 | |
|---|
| 4910 | Teach GHCi to show a "perhaps you forgot to use :trace?" when |
|---|
| 4911 | it finds that the user is trying to retrieve an empty :history |
|---|
| 4912 | |
|---|
| 4913 | ] |
|---|
| 4914 | [Prevent the binding of unboxed things by :print |
|---|
| 4915 | Pepe Iborra <mnislaih@gmail.com>**20071208181830] |
|---|
| 4916 | [Coercions from boxy splitters must be sym'ed in pattern matches |
|---|
| 4917 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20071208105018] |
|---|
| 4918 | [Properly keep track of whether normalising given or wanted dicts |
|---|
| 4919 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20071207071302 |
|---|
| 4920 | - The information of whether given or wanted class dictionaries where |
|---|
| 4921 | normalised by rewriting wasn't always correctly propagated in TcTyFuns, |
|---|
| 4922 | which lead to malformed dictionary bindings. |
|---|
| 4923 | - Also fixes a bug in TcPat.tcConPat where GADT equalities where emitted in |
|---|
| 4924 | the wrong position in case bindings (which led to CoreLint failures). |
|---|
| 4925 | ] |
|---|
| 4926 | [TcPat.tcConPat uses equalities instead of GADT refinement |
|---|
| 4927 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20071120071208 |
|---|
| 4928 | * This patch implements the use of equality constraints instead of GADT |
|---|
| 4929 | refinements that we have been discussing for a while. |
|---|
| 4930 | * It just changes TcPat.tcConPat. It doesn't have any of the simplification |
|---|
| 4931 | and dead code removal that is possible due to this change. |
|---|
| 4932 | * At the moment, this patch breaks a fair number of GADT regression tests. |
|---|
| 4933 | ] |
|---|
| 4934 | [Use installPackage for register --inplace as well as installing |
|---|
| 4935 | Ian Lynagh <igloo@earth.li>**20071207234652 |
|---|
| 4936 | We also need to do the GHC.Prim hack when registering inplace or the |
|---|
| 4937 | tests that use it fail. |
|---|
| 4938 | ] |
|---|
| 4939 | [Fix the libraries Makefile |
|---|
| 4940 | Ian Lynagh <igloo@earth.li>**20071205125015 |
|---|
| 4941 | x && y |
|---|
| 4942 | is not the same as |
|---|
| 4943 | if x; then y; fi |
|---|
| 4944 | as the latter doesn't fail when x fails |
|---|
| 4945 | ] |
|---|
| 4946 | [Copy hscolour.css into dist/... so it gets installed with the library docs |
|---|
| 4947 | Ian Lynagh <igloo@earth.li>**20071205013703] |
|---|
| 4948 | [Add the hscolour.css from hscolour 1.8 |
|---|
| 4949 | Ian Lynagh <igloo@earth.li>**20071205011733] |
|---|
| 4950 | [BIN_DIST_INST_SUBDIR Needs to be defined in config.mk so ./Makefile can see it |
|---|
| 4951 | Ian Lynagh <igloo@earth.li>**20071207121317] |
|---|
| 4952 | [#include ../includes/MachRegs.h rather than just MachRegs.h |
|---|
| 4953 | Ian Lynagh <igloo@earth.li>**20071205170335 |
|---|
| 4954 | This fixes building on NixOS. I'm not sure why it worked everywhere else, |
|---|
| 4955 | but not on NixOS, before. |
|---|
| 4956 | ] |
|---|
| 4957 | [Fix bindist creation: readline/config.mk is gone |
|---|
| 4958 | Ian Lynagh <igloo@earth.li>**20071203123031] |
|---|
| 4959 | [FIX #1843: Generate different instructions on PPC |
|---|
| 4960 | Ian Lynagh <igloo@earth.li>**20071203123237 |
|---|
| 4961 | The old ones caused lots of |
|---|
| 4962 | unknown scattered relocation type 4 |
|---|
| 4963 | errors. Patch from Chris Kuklewicz. |
|---|
| 4964 | ] |
|---|
| 4965 | [Refactor gen_contents_index |
|---|
| 4966 | Ian Lynagh <igloo@earth.li>**20071207183538 |
|---|
| 4967 | Also fixes it with Solaris's sh, spotted by Christian Maeder |
|---|
| 4968 | ] |
|---|
| 4969 | [Use GHC.Exts rather than GHC.Prim |
|---|
| 4970 | Ian Lynagh <igloo@earth.li>**20071202234222] |
|---|
| 4971 | [Alter the base:GHC.Prim hack in installPackage, following changes in base |
|---|
| 4972 | Ian Lynagh <igloo@earth.li>**20071202215719] |
|---|
| 4973 | [Remove debug warning, and explain why |
|---|
| 4974 | simonpj@microsoft.com**20071207170507] |
|---|
| 4975 | [comment only |
|---|
| 4976 | Simon Marlow <simonmar@microsoft.com>**20071206092422] |
|---|
| 4977 | [comment typo |
|---|
| 4978 | Simon Marlow <simonmar@microsoft.com>**20071206092412] |
|---|
| 4979 | [add Outputable instance for OccIfaceEq |
|---|
| 4980 | Simon Marlow <simonmar@microsoft.com>**20071206092403] |
|---|
| 4981 | [Workaround for #1959: assume untracked names have changed |
|---|
| 4982 | Simon Marlow <simonmar@microsoft.com>**20071206092349 |
|---|
| 4983 | This fixes the 1959 test, but will do more recompilation than is |
|---|
| 4984 | strictly necessary (but only when -O is on). Still, more |
|---|
| 4985 | recompilation is better than segfaults, link errors or other random |
|---|
| 4986 | breakage. |
|---|
| 4987 | ] |
|---|
| 4988 | [FIX part of #1959: declaration versions were not being incremented correctly |
|---|
| 4989 | Simon Marlow <simonmar@microsoft.com>**20071206084556 |
|---|
| 4990 | We were building a mapping from ModuleName to [Occ] from the usage |
|---|
| 4991 | list, using the usg_mod field as the key. Unfortunately, due to a |
|---|
| 4992 | very poor naming decision, usg_mod is actually the module version, not |
|---|
| 4993 | the ModuleName. usg_name is the ModuleName. Since Version is also an |
|---|
| 4994 | instance of Uniquable, there was no type error: all that happened was |
|---|
| 4995 | lookups in the map never succeeded. I shall rename the fields of |
|---|
| 4996 | Usage in a separate patch. |
|---|
| 4997 | |
|---|
| 4998 | This doesn't completely fix #1959, but it gets part of the way there. |
|---|
| 4999 | |
|---|
| 5000 | I have to take partial blame as the person who wrote this fragment of |
|---|
| 5001 | code in late 2006 (patch "Interface file optimisation and removal of |
|---|
| 5002 | nameParent"). |
|---|
| 5003 | ] |
|---|
| 5004 | [move FP_FIND_ROOT after the "GHC is required" check |
|---|
| 5005 | Simon Marlow <simonmar@microsoft.com>**20071205101814] |
|---|
| 5006 | [FIX #1110: hackery also needed when running gcc for CPP |
|---|
| 5007 | Simon Marlow <simonmar@microsoft.com>**20071205150230] |
|---|
| 5008 | [Teach :print to follow references (STRefs and IORefs) |
|---|
| 5009 | Pepe Iborra <mnislaih@gmail.com>**20071204105511 |
|---|
| 5010 | |
|---|
| 5011 | Prelude Data.IORef> :p l |
|---|
| 5012 | l = (_t4::Maybe Integer) : (_t5::[Maybe Integer]) |
|---|
| 5013 | Prelude Data.IORef> p <- newIORef l |
|---|
| 5014 | Prelude Data.IORef> :p p |
|---|
| 5015 | p = GHC.IOBase.IORef (GHC.STRef.STRef {((_t6::Maybe Integer) : |
|---|
| 5016 | (_t7::[Maybe Integer]))}) |
|---|
| 5017 | Prelude Data.IORef> :sp p |
|---|
| 5018 | p = GHC.IOBase.IORef (GHC.STRef.STRef {(_ : _)}) |
|---|
| 5019 | |
|---|
| 5020 | |
|---|
| 5021 | I used braces to denote the contents of a reference. |
|---|
| 5022 | Perhaps there is a more appropriate notation? |
|---|
| 5023 | ] |
|---|
| 5024 | [refactoring only |
|---|
| 5025 | Pepe Iborra <mnislaih@gmail.com>**20071202125400] |
|---|
| 5026 | [Change --shared to -shared in Win32 DLL docs |
|---|
| 5027 | simonpj@microsoft.com**20071204154023] |
|---|
| 5028 | [protect console handler against concurrent access (#1922) |
|---|
| 5029 | Simon Marlow <simonmar@microsoft.com>**20071204153918] |
|---|
| 5030 | [Make eta reduction check more carefully for bottoms (fix Trac #1947) |
|---|
| 5031 | simonpj@microsoft.com**20071204145803 |
|---|
| 5032 | |
|---|
| 5033 | Eta reduction was wrongly transforming |
|---|
| 5034 | f = \x. f x |
|---|
| 5035 | to |
|---|
| 5036 | f = f |
|---|
| 5037 | |
|---|
| 5038 | Solution: don't trust f's arity information; instead look at its |
|---|
| 5039 | unfolding. See Note [Eta reduction conditions] |
|---|
| 5040 | |
|---|
| 5041 | Almost all the new lines are comments! |
|---|
| 5042 | |
|---|
| 5043 | |
|---|
| 5044 | ] |
|---|
| 5045 | [Improve inlining for INLINE non-functions |
|---|
| 5046 | simonpj@microsoft.com**20071204114955 |
|---|
| 5047 | |
|---|
| 5048 | (No need to merge to 6.8, but no harm if a subsequent patch needs it.) |
|---|
| 5049 | |
|---|
| 5050 | The proximate cause for this patch is to improve the inlining for INLINE |
|---|
| 5051 | things that are not functions; this came up in the NDP project. See |
|---|
| 5052 | Note [Lone variables] in CoreUnfold. |
|---|
| 5053 | |
|---|
| 5054 | This caused some refactoring that actually made things simpler. In |
|---|
| 5055 | particular, more of the inlining logic has moved from SimplUtils to |
|---|
| 5056 | CoreUnfold, where it belongs. |
|---|
| 5057 | |
|---|
| 5058 | |
|---|
| 5059 | ] |
|---|
| 5060 | [fix race conditions in sandboxIO (#1583, #1922, #1946) |
|---|
| 5061 | Simon Marlow <simonmar@microsoft.com>**20071204114444 |
|---|
| 5062 | using the new block-inheriting forkIO (#1048) |
|---|
| 5063 | ] |
|---|
| 5064 | [:cd with no argument goes to the user's home directory |
|---|
| 5065 | Simon Marlow <simonmar@microsoft.com>**20071204113945 |
|---|
| 5066 | Seems better than getting a confusing 'cannot find directory' exception. |
|---|
| 5067 | ] |
|---|
| 5068 | [forkIO starts the new thread blocked if the parent is blocked (#1048) |
|---|
| 5069 | Simon Marlow <simonmar@microsoft.com>**20071204110947] |
|---|
| 5070 | [Improve eta reduction, to reduce Simplifier iterations |
|---|
| 5071 | simonpj@microsoft.com**20071203150039 |
|---|
| 5072 | |
|---|
| 5073 | I finally got around to investigating why the Simplifier was sometimes |
|---|
| 5074 | iterating so often. There's a nice example in Text.ParserCombinators.ReadPrec, |
|---|
| 5075 | which produced: |
|---|
| 5076 | |
|---|
| 5077 | NOTE: Simplifier still going after 3 iterations; bailing out. Size = 339 |
|---|
| 5078 | NOTE: Simplifier still going after 3 iterations; bailing out. Size = 339 |
|---|
| 5079 | NOTE: Simplifier still going after 3 iterations; bailing out. Size = 339 |
|---|
| 5080 | |
|---|
| 5081 | No progress is being made. It turned out that an interaction between |
|---|
| 5082 | eta-expansion, casts, and eta reduction was responsible. The change is |
|---|
| 5083 | small and simple, in SimplUtils.mkLam: do not require the body to be |
|---|
| 5084 | a Lam when floating the cast outwards. |
|---|
| 5085 | |
|---|
| 5086 | I also discovered a missing side condition in the same equation, so fixing |
|---|
| 5087 | that is good too. Now there is no loop when compiling ReadPrec. |
|---|
| 5088 | |
|---|
| 5089 | Should do a full nofib run though. |
|---|
| 5090 | |
|---|
| 5091 | ] |
|---|
| 5092 | [Don't default to stripping binaries when installing |
|---|
| 5093 | Ian Lynagh <igloo@earth.li>**20071202195817] |
|---|
| 5094 | [Improve pretty-printing for Insts |
|---|
| 5095 | simonpj@microsoft.com**20071128173125] |
|---|
| 5096 | [Reorganise TcSimplify (again); FIX Trac #1919 |
|---|
| 5097 | simonpj@microsoft.com**20071128173146 |
|---|
| 5098 | |
|---|
| 5099 | This was a bit tricky. We had a "given" dict like (d7:Eq a); then it got |
|---|
| 5100 | supplied to reduceImplication, which did some zonking, and emerged with |
|---|
| 5101 | a "needed given" (d7:Eq Int). That got everything confused. |
|---|
| 5102 | |
|---|
| 5103 | I found a way to simplify matters significantly. Now reduceContext |
|---|
| 5104 | - first deals with methods/literals/dictionaries |
|---|
| 5105 | - then deals with implications |
|---|
| 5106 | Separating things in this way not only made the bug go away, but |
|---|
| 5107 | eliminated the need for the recently-added "needed-givens" results returned |
|---|
| 5108 | by checkLoop. Hurrah. |
|---|
| 5109 | |
|---|
| 5110 | It's still a swamp. But it's a bit better. |
|---|
| 5111 | |
|---|
| 5112 | ] |
|---|
| 5113 | [FIX #1914: GHCi forgot all the modules that were loaded before an error |
|---|
| 5114 | Simon Marlow <simonmar@microsoft.com>**20071130130734] |
|---|
| 5115 | [FIX #1744: ignore the byte-order mark at the beginning of a file |
|---|
| 5116 | Simon Marlow <simonmar@microsoft.com>**20071130101100] |
|---|
| 5117 | [FIX Trac #1935: generate superclass constraints for derived classes |
|---|
| 5118 | simonpj@microsoft.com**20071128150541 |
|---|
| 5119 | |
|---|
| 5120 | This bug only reports a problem with phantom types, but actually |
|---|
| 5121 | there was quite a long-standing and significant omission in the |
|---|
| 5122 | constraint generation for derived classes. See |
|---|
| 5123 | Note [Superclasses of derived instance] in TcDeriv. |
|---|
| 5124 | |
|---|
| 5125 | The test deriving-1935 tests both cases. |
|---|
| 5126 | |
|---|
| 5127 | |
|---|
| 5128 | ] |
|---|
| 5129 | [Print a bit more info in VarBinds (no need to merge) |
|---|
| 5130 | simonpj@microsoft.com**20071128150354] |
|---|
| 5131 | [Check for duplicate bindings in CoreLint |
|---|
| 5132 | simonpj@microsoft.com**20071128150214] |
|---|
| 5133 | [add comment |
|---|
| 5134 | Simon Marlow <simonmar@microsoft.com>**20071128111417] |
|---|
| 5135 | [FIX #1916: don't try to convert float constants to int in CMM optimizer |
|---|
| 5136 | Bertram Felgenhauer <int-e@gmx.de>**20071122095513] |
|---|
| 5137 | [give a more useful message when the static flags have not been initialised (#1938) |
|---|
| 5138 | Simon Marlow <simonmar@microsoft.com>**20071127135435] |
|---|
| 5139 | [Rebuild utils with the stage1 compiler when making a bindist; fixes trac #1860 |
|---|
| 5140 | Ian Lynagh <igloo@earth.li>**20071127203959 |
|---|
| 5141 | This is a bit unpleasant, as "make binary-dist" really shouldn't actually |
|---|
| 5142 | build anything, but it works. |
|---|
| 5143 | ] |
|---|
| 5144 | [Remove the --print-docdir flag |
|---|
| 5145 | Ian Lynagh <igloo@earth.li>**20071127195605 |
|---|
| 5146 | It wasn't doing the right thing for bindists. Let's rethink... |
|---|
| 5147 | ] |
|---|
| 5148 | [FIX #1925: the interpreter was not maintaining tag bits correctly |
|---|
| 5149 | Simon Marlow <simonmar@microsoft.com>**20071127122614 |
|---|
| 5150 | See comment for details |
|---|
| 5151 | ] |
|---|
| 5152 | [add missing instruction: ALLOC_AP_NOUPD |
|---|
| 5153 | Simon Marlow <simonmar@microsoft.com>**20071127122604] |
|---|
| 5154 | [Check tag bits on the fun pointer of a PAP |
|---|
| 5155 | Simon Marlow <simonmar@microsoft.com>**20071126160420] |
|---|
| 5156 | [canonicalise the path to HsColour |
|---|
| 5157 | Simon Marlow <simonmar@microsoft.com>**20071126141614] |
|---|
| 5158 | [Consistently put www. on the front of haskell.org in URLs |
|---|
| 5159 | Ian Lynagh <igloo@earth.li>**20071126215256] |
|---|
| 5160 | [Fix some more URLs |
|---|
| 5161 | Ian Lynagh <igloo@earth.li>**20071126214147] |
|---|
| 5162 | [Tweak some URLs |
|---|
| 5163 | Ian Lynagh <igloo@earth.li>**20071126194148] |
|---|
| 5164 | [Fix some links |
|---|
| 5165 | Ian Lynagh <igloo@earth.li>**20071126184406] |
|---|
| 5166 | [Copy gmp stamps into bindists, so we don't try and rebuild gmp |
|---|
| 5167 | Ian Lynagh <igloo@earth.li>**20071125211919] |
|---|
| 5168 | [On Windows, Delete the CriticalSection's we Initialize |
|---|
| 5169 | Ian Lynagh <igloo@earth.li>**20071125125845] |
|---|
| 5170 | [On Windows, add a start menu link to the flag reference |
|---|
| 5171 | Ian Lynagh <igloo@earth.li>**20071125124429] |
|---|
| 5172 | [Remove html/ from the paths we put in the start menu on Windows |
|---|
| 5173 | Ian Lynagh <igloo@earth.li>**20071125124150] |
|---|
| 5174 | [MERGED: Make ":" in GHCi repeat the last command |
|---|
| 5175 | Ian Lynagh <igloo@earth.li>**20071125122020 |
|---|
| 5176 | Ian Lynagh <igloo@earth.li>**20071124231857 |
|---|
| 5177 | It used to be a synonym for ":r" in 6.6.1, but this wasn't documented or |
|---|
| 5178 | known about by the developers. In 6.8.1 it was accidentally broken. |
|---|
| 5179 | This patch brings it back, but as "repeat the last command", similar to |
|---|
| 5180 | pressing enter in gdb. This is almost as good for people who want it to |
|---|
| 5181 | reload, and means that it can also be used to repeat commands like :step. |
|---|
| 5182 | ] |
|---|
| 5183 | [MERGED: Put library docs in a $pkg, rather than $pkgid, directory; fixes trac #1864 |
|---|
| 5184 | Ian Lynagh <igloo@earth.li>**20071124212305 |
|---|
| 5185 | Ian Lynagh <igloo@earth.li>**20071124171220 |
|---|
| 5186 | ] |
|---|
| 5187 | [Don't make a library documentation prologue |
|---|
| 5188 | Ian Lynagh <igloo@earth.li>**20071124211943 |
|---|
| 5189 | It's far too large now, and no-one complained when 6.8.1 didn't have one. |
|---|
| 5190 | ] |
|---|
| 5191 | [Don't put package version numbers in links in index.html |
|---|
| 5192 | Ian Lynagh <igloo@earth.li>**20071124211629] |
|---|
| 5193 | [Define install-strip in Makefile |
|---|
| 5194 | Ian Lynagh <igloo@earth.li>**20071124205037] |
|---|
| 5195 | [Define install-strip in distrib/Makefile |
|---|
| 5196 | Ian Lynagh <igloo@earth.li>**20071124204803] |
|---|
| 5197 | [Install gmp from bindists; fixes trac #1848 |
|---|
| 5198 | Ian Lynagh <igloo@earth.li>**20071124185240] |
|---|
| 5199 | [(native gen) fix code generated for GDTOI on x86_32 |
|---|
| 5200 | Bertram Felgenhauer <int-e@gmx.de>**20071121063942 |
|---|
| 5201 | See trac #1910. |
|---|
| 5202 | ] |
|---|
| 5203 | [Copy the INSTALL hack from mk/config.mk.in into distrib/Makefile-bin-vars.in |
|---|
| 5204 | Ian Lynagh <igloo@earth.li>**20071124163028 |
|---|
| 5205 | configure will set INSTALL to ./install-sh if it can't find it in the path, |
|---|
| 5206 | so we need to replace the . with the path to our root. |
|---|
| 5207 | ] |
|---|
| 5208 | [Make install-sh executable /before/ we try to find it |
|---|
| 5209 | Ian Lynagh <igloo@earth.li>**20071124162450] |
|---|
| 5210 | [Document --info in the +RTS -? help |
|---|
| 5211 | Ian Lynagh <igloo@earth.li>**20071123204352] |
|---|
| 5212 | [MERGED: If we have hscolour then make source code links in teh haddock docs |
|---|
| 5213 | Ian Lynagh <igloo@earth.li>**20071123233113 |
|---|
| 5214 | Fri Nov 23 13:15:59 PST 2007 Ian Lynagh <igloo@earth.li> |
|---|
| 5215 | ] |
|---|
| 5216 | [Tidy and trim the type environment in mkBootModDetails |
|---|
| 5217 | simonpj@microsoft.com**20071123153519 |
|---|
| 5218 | |
|---|
| 5219 | Should fix Trac #1833 |
|---|
| 5220 | |
|---|
| 5221 | We were failing to trim the type envt in mkBootModDetails, so several |
|---|
| 5222 | functions all called (*), for example, were getting into the interface. |
|---|
| 5223 | Result chaos. It only actually bites when we do the retyping-loop thing, |
|---|
| 5224 | which is why it's gone so long without a fix. |
|---|
| 5225 | |
|---|
| 5226 | |
|---|
| 5227 | ] |
|---|
| 5228 | [refactor: HscNothing and boot modules do not need desugaring |
|---|
| 5229 | Simon Marlow <simonmar@microsoft.com>**20071123135237] |
|---|
| 5230 | [FIX #1910: fix code generated for GDTOI on x86_32 |
|---|
| 5231 | Bertram Felgenhauer <int-e@gmx.de>*-20071121102627] |
|---|
| 5232 | [Properly ppr InstEqs in wanteds of implication constraints |
|---|
| 5233 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20071122093002] |
|---|
| 5234 | [FIX #1910: fix code generated for GDTOI on x86_32 |
|---|
| 5235 | Bertram Felgenhauer <int-e@gmx.de>**20071121102627] |
|---|
| 5236 | [Add built-in Double operations to vectorisation |
|---|
| 5237 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071122002517] |
|---|
| 5238 | [Teach vectorisation about Double |
|---|
| 5239 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071121054932] |
|---|
| 5240 | [Vectorise polyexprs with notes |
|---|
| 5241 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071121053102] |
|---|
| 5242 | [Make rebindable do-notation behave as advertised |
|---|
| 5243 | simonpj@microsoft.com**20071121174914 |
|---|
| 5244 | |
|---|
| 5245 | Adopt Trac #1537. The patch ended up a bit bigger than I expected, |
|---|
| 5246 | so I suggest we do not merge this into the 6.8 branch. But there |
|---|
| 5247 | is no funadamental reason why not. |
|---|
| 5248 | |
|---|
| 5249 | With this patch, rebindable do-notation really does type as if you |
|---|
| 5250 | had written the original (>>) and (>>=) operations in desguared form. |
|---|
| 5251 | |
|---|
| 5252 | I ended up refactoring some of the (rather complicated) error-context |
|---|
| 5253 | stuff in TcUnify, by pushing an InstOrigin into tcSubExp and its |
|---|
| 5254 | various calls. That means we could get rid of tcFunResTy, and the |
|---|
| 5255 | SubCtxt type. This should improve error messages slightly |
|---|
| 5256 | in complicated situations, because we have an Origin to hand |
|---|
| 5257 | to instCall (in the (isSigmaTy actual_ty) case of tc_sub1). |
|---|
| 5258 | |
|---|
| 5259 | Thanks to Pepe for the first draft of the patch. |
|---|
| 5260 | |
|---|
| 5261 | ] |
|---|
| 5262 | [Add DEBUG-only flag -dsuppress-uniques to suppress printing of uniques |
|---|
| 5263 | simonpj@microsoft.com**20071116152446 |
|---|
| 5264 | |
|---|
| 5265 | This is intended only for debugging use: it makes it easier to |
|---|
| 5266 | compare two variants without the variations between uniques mattering. |
|---|
| 5267 | |
|---|
| 5268 | (Of course, you can't actually feed the output to the C compiler |
|---|
| 5269 | or assembler and expect anything sensible to happen!) |
|---|
| 5270 | |
|---|
| 5271 | ] |
|---|
| 5272 | [Add -dcore-lint when validating libraries |
|---|
| 5273 | simonpj@microsoft.com**20071105164733] |
|---|
| 5274 | [Fix Trac #1913: check data const for derived types are in scope |
|---|
| 5275 | simonpj@microsoft.com**20071121151428 |
|---|
| 5276 | |
|---|
| 5277 | When deriving an instance, the data constructors should all be in scope. |
|---|
| 5278 | This patch checks the condition. |
|---|
| 5279 | |
|---|
| 5280 | |
|---|
| 5281 | ] |
|---|
| 5282 | [Fix Trac #1909: type of map in docs |
|---|
| 5283 | simonpj@microsoft.com**20071120160152] |
|---|
| 5284 | [Move file locking into the RTS, fixing #629, #1109 |
|---|
| 5285 | Simon Marlow <simonmar@microsoft.com>**20071120140859 |
|---|
| 5286 | File locking (of the Haskell 98 variety) was previously done using a |
|---|
| 5287 | static table with linear search, which had two problems: the array had |
|---|
| 5288 | a fixed size and was sometimes too small (#1109), and performance of |
|---|
| 5289 | lockFile/unlockFile was suboptimal due to the linear search. |
|---|
| 5290 | Also the algorithm failed to count readers as required by Haskell 98 |
|---|
| 5291 | (#629). |
|---|
| 5292 | |
|---|
| 5293 | Now it's done using a hash table (provided by the RTS). Furthermore I |
|---|
| 5294 | avoided the extra fstat() for every open file by passing the dev_t and |
|---|
| 5295 | ino_t into lockFile. This and the improvements to the locking |
|---|
| 5296 | algorithm result in a healthy 20% or so performance increase for |
|---|
| 5297 | opening/closing files (see openFile008 test). |
|---|
| 5298 | ] |
|---|
| 5299 | [FIX Trac #1825: standalone deriving Typeable |
|---|
| 5300 | simonpj@microsoft.com**20071120125732 |
|---|
| 5301 | |
|---|
| 5302 | Standalone deriving of typeable now requires you to say |
|---|
| 5303 | instance Typeable1 Maybe |
|---|
| 5304 | which is exactly the shape of instance decl that is generated |
|---|
| 5305 | by a 'deriving( Typeable )' clause on the data type decl. |
|---|
| 5306 | |
|---|
| 5307 | This is a bit horrid, but it's the only consistent way, at least |
|---|
| 5308 | for now. If you say something else, the error messages are helpful. |
|---|
| 5309 | |
|---|
| 5310 | MERGE to 6.8 branch |
|---|
| 5311 | |
|---|
| 5312 | ] |
|---|
| 5313 | [FIX #1715: egregious bug in ifaceDeclSubBndrs |
|---|
| 5314 | simonpj@microsoft.com**20071120111723 |
|---|
| 5315 | |
|---|
| 5316 | ifaceDeclSubBndrs didn't have an IfaceSyn case; but with type |
|---|
| 5317 | families an IfaceSyn can introduce subordinate binders. Result: |
|---|
| 5318 | chaos. |
|---|
| 5319 | |
|---|
| 5320 | The fix is easy though. Merge to 6.8 branch. |
|---|
| 5321 | |
|---|
| 5322 | |
|---|
| 5323 | ] |
|---|
| 5324 | [Always do 'setup makefile' before building each library |
|---|
| 5325 | Simon Marlow <simonmar@microsoft.com>**20071120103329 |
|---|
| 5326 | This forces preprocessing to happen, which is necessary if any of the |
|---|
| 5327 | .hsc files have been modified. Without this change, a 'setup |
|---|
| 5328 | makefile' would be required by hand after a .hsc file changed. |
|---|
| 5329 | Fortunately 'setup makefile' isn't much extra work, and I've made it |
|---|
| 5330 | not overwrite GNUmakefile if it hasn't changed, which avoids |
|---|
| 5331 | recalculating the dependencies each time. |
|---|
| 5332 | ] |
|---|
| 5333 | [FIX #1847 (improve :browse! docs, fix unqual) |
|---|
| 5334 | claus.reinke@talk21.com**20071108013147 |
|---|
| 5335 | |
|---|
| 5336 | - add example to docs, explain how to interpret |
|---|
| 5337 | output of `:browse! Data.Maybe` |
|---|
| 5338 | - print unqualified names according to current |
|---|
| 5339 | context, not the context of the target module |
|---|
| 5340 | |
|---|
| 5341 | ] |
|---|
| 5342 | [Track changes to package ndp |
|---|
| 5343 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071120033716] |
|---|
| 5344 | [Temporary hack for passing PArrays from unvectorised to vectorised code |
|---|
| 5345 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071120024545] |
|---|
| 5346 | [Bind NDP stuff to [:.:] arrays |
|---|
| 5347 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119020302] |
|---|
| 5348 | [Don't treat enumerations specially during vectorisation for the moment |
|---|
| 5349 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119013729] |
|---|
| 5350 | [Fix bugs in vectorisation of case expressions |
|---|
| 5351 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119013714] |
|---|
| 5352 | [More built-in NDP combinators |
|---|
| 5353 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119012205] |
|---|
| 5354 | [New vectorisation built-ins |
|---|
| 5355 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118051940] |
|---|
| 5356 | [Fix bug in conversion unvect/vect |
|---|
| 5357 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118051926] |
|---|
| 5358 | [Extend built-in vectorisation environments |
|---|
| 5359 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118045219] |
|---|
| 5360 | [Fix bug in generation of environments for vectorisation |
|---|
| 5361 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118045203] |
|---|
| 5362 | [Add builtin var->var mapping to vectorisation |
|---|
| 5363 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118042605] |
|---|
| 5364 | [Extend vectorisation built-in mappings with datacons |
|---|
| 5365 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118034351] |
|---|
| 5366 | [Change representation of parallel arrays of enumerations |
|---|
| 5367 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118033355] |
|---|
| 5368 | [Add vectorisation-related builtin |
|---|
| 5369 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118031513] |
|---|
| 5370 | [Teach vectorisation about Bool |
|---|
| 5371 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117042714] |
|---|
| 5372 | [Incomplete support for boxing during vectorisation |
|---|
| 5373 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117040739] |
|---|
| 5374 | [Make sure some TyCons always vectorise to themselves |
|---|
| 5375 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117040537] |
|---|
| 5376 | [Simple conversion vectorised -> unvectorised |
|---|
| 5377 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117023029] |
|---|
| 5378 | [Fix bug in case vectorisation |
|---|
| 5379 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117015014] |
|---|
| 5380 | [Vectorisation of algebraic case expressions |
|---|
| 5381 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116074814] |
|---|
| 5382 | [More vectorisation-related built-ins |
|---|
| 5383 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116061831] |
|---|
| 5384 | [Vectorisation utilities |
|---|
| 5385 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116051037] |
|---|
| 5386 | [Add vectorisation built-ins |
|---|
| 5387 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116050959] |
|---|
| 5388 | [Fix vectorisation of binders in case expressions |
|---|
| 5389 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116021833] |
|---|
| 5390 | [Two small typos in the flags summary (merge to 6.8 branch) |
|---|
| 5391 | simonpj@microsoft.com**20071119134639] |
|---|
| 5392 | [Improve the situation for Trac #959: civilised warning instead of a trace msg |
|---|
| 5393 | simonpj@microsoft.com**20071119122938 |
|---|
| 5394 | |
|---|
| 5395 | This doesn't fix the root cause of the bug, but it makes the report |
|---|
| 5396 | more civilised, and points to further info. |
|---|
| 5397 | |
|---|
| 5398 | ] |
|---|
| 5399 | [FIX Trac #1806: test for correct arity for datacon in infix pattern patch |
|---|
| 5400 | simonpj@microsoft.com**20071119114301 |
|---|
| 5401 | |
|---|
| 5402 | Happily the fix is easy; pls merge |
|---|
| 5403 | |
|---|
| 5404 | ] |
|---|
| 5405 | [Accept x86_64-*-freebsd* as well as amd64-*-freebsd* in configure.ac |
|---|
| 5406 | Ian Lynagh <igloo@earth.li>**20071117154502 |
|---|
| 5407 | Patch from Brian P. O'Hanlon |
|---|
| 5408 | ] |
|---|
| 5409 | [Attempt at fixing #1873, #1360 |
|---|
| 5410 | Simon Marlow <simonmar@microsoft.com>**20071116152148 |
|---|
| 5411 | |
|---|
| 5412 | I think I figured out a reasonable way to manage the GHCi context, |
|---|
| 5413 | comments welcome. |
|---|
| 5414 | |
|---|
| 5415 | Rule 1: external package modules in the context are persistent. That |
|---|
| 5416 | is, when you say 'import Data.Maybe' it survives over :load, :add, |
|---|
| 5417 | :reload and :cd. |
|---|
| 5418 | |
|---|
| 5419 | Rule 2: :load and :add remove all home-package modules from the |
|---|
| 5420 | context and add the rightmost target, as a *-module if possible. This |
|---|
| 5421 | is as before, and makes sense for :load because we're starting a new |
|---|
| 5422 | program; the old home-package modules don't make sense any more. For |
|---|
| 5423 | :add, it usually does what you want, because the new target will |
|---|
| 5424 | become the context. |
|---|
| 5425 | |
|---|
| 5426 | Rule 3: any modules from the context that fail to load during a |
|---|
| 5427 | :reload are remembered, and re-added to the context at the next |
|---|
| 5428 | successful :reload. |
|---|
| 5429 | |
|---|
| 5430 | Claus' suggestion about adding the "remembered" modules to the prompt |
|---|
| 5431 | prefixed with a ! is implemented but commented out. I couldn't |
|---|
| 5432 | decide whether it was useful or confusing. |
|---|
| 5433 | |
|---|
| 5434 | One difference that people might notice is that after a :reload where |
|---|
| 5435 | there were errors, GHCi would previously dump you in the most recent |
|---|
| 5436 | module that it loaded. Now it dumps you in whatever subset of the |
|---|
| 5437 | current context still makes sense, and in the common case that will |
|---|
| 5438 | probably be {Prelude}. |
|---|
| 5439 | ] |
|---|
| 5440 | [Wibble to fix Trac #1901 (shorten messsage slightly) |
|---|
| 5441 | simonpj@microsoft.com**20071116150341] |
|---|
| 5442 | [Improve links from flag reference to the relevant section; and improve doc of RankN flags |
|---|
| 5443 | simonpj@microsoft.com**20071116145816] |
|---|
| 5444 | [FIX Trac #1901: check no existential context in H98 mode |
|---|
| 5445 | simonpj@microsoft.com**20071116145609] |
|---|
| 5446 | [Improve documentation of data type declarations (Trac #1901) |
|---|
| 5447 | simonpj@microsoft.com**20071116081841] |
|---|
| 5448 | [Change the command-line semantics for query commands |
|---|
| 5449 | Simon Marlow <simonmar@microsoft.com>**20071116132046 |
|---|
| 5450 | |
|---|
| 5451 | From the help text: |
|---|
| 5452 | |
|---|
| 5453 | Commands that query the package database (list, latest, describe, |
|---|
| 5454 | field) operate on the list of databases specified by the flags |
|---|
| 5455 | --user, --global, and --package-conf. If none of these flags are |
|---|
| 5456 | given, the default is --global --user. |
|---|
| 5457 | |
|---|
| 5458 | This makes it possible to query just a single database (e.g. the |
|---|
| 5459 | global one without the user one), which needed tricks to accomplish |
|---|
| 5460 | before. |
|---|
| 5461 | ] |
|---|
| 5462 | [use "ghc-pkg latest --global" instead of "ghc-pkg list --simple-output" |
|---|
| 5463 | Simon Marlow <simonmar@microsoft.com>**20071116122018 |
|---|
| 5464 | The former now does the right thing: it uses the global database only, |
|---|
| 5465 | and picks the most recent package with the given name. |
|---|
| 5466 | ] |
|---|
| 5467 | [Disallow installing packages whose names differ in case only. |
|---|
| 5468 | Simon Marlow <simonmar@microsoft.com>**20071116121153 |
|---|
| 5469 | --force overrides. Requested by Duncan Coutts, with a view to |
|---|
| 5470 | treating package names as case-insensitive in the future. |
|---|
| 5471 | ] |
|---|
| 5472 | [FIX BUILD (with GHC 6.2.x): update .hi-boot file |
|---|
| 5473 | Simon Marlow <simonmar@microsoft.com>**20071116101227] |
|---|
| 5474 | [FIX #1828: installing to a patch with spaces in |
|---|
| 5475 | Simon Marlow <simonmar@microsoft.com>**20071115155747 |
|---|
| 5476 | We have to pass the path to gcc when calling windres, which itself |
|---|
| 5477 | might have spaces in. Furthermore, we have to pass the path to gcc's |
|---|
| 5478 | tools to gcc. This means getting the quoting right, and after much |
|---|
| 5479 | experimentation and reading of the windres sources I found something |
|---|
| 5480 | that works: passing --use-temp-files to windres makes it use its own |
|---|
| 5481 | implementation of quoting instead of popen(), and this does what we |
|---|
| 5482 | want. Sigh. |
|---|
| 5483 | ] |
|---|
| 5484 | [on Windows, install to a directory with spaces (test for #1828) |
|---|
| 5485 | Simon Marlow <simonmar@microsoft.com>**20071115155327] |
|---|
| 5486 | [FIX #1679: crash on returning from a foreign call |
|---|
| 5487 | Simon Marlow <simonmar@microsoft.com>**20071115131635 |
|---|
| 5488 | We forgot to save a pointer to the BCO over the foreign call. Doing |
|---|
| 5489 | enough allocation and GC during the call could provoke a crash. |
|---|
| 5490 | ] |
|---|
| 5491 | [Avoid the use of unversioned package dependencies |
|---|
| 5492 | Simon Marlow <simonmar@microsoft.com>**20071115103249 |
|---|
| 5493 | Fortunately "ghc-pkg list $pkg --simple-output" is a good way to add |
|---|
| 5494 | the version number. |
|---|
| 5495 | ] |
|---|
| 5496 | [FIX #1596 (remove deprecated --define-name) |
|---|
| 5497 | Simon Marlow <simonmar@microsoft.com>**20071114165323 |
|---|
| 5498 | Also remove the old command-line syntax for ghc-pkg, which was not |
|---|
| 5499 | documented. Do not merge. |
|---|
| 5500 | ] |
|---|
| 5501 | [FIX #1837: remove deprecated support for unversioned dependencies (do not merge) |
|---|
| 5502 | Simon Marlow <simonmar@microsoft.com>**20071114161044 |
|---|
| 5503 | |
|---|
| 5504 | ] |
|---|
| 5505 | [wibble |
|---|
| 5506 | Pepe Iborra <mnislaih@gmail.com>**20071114233356] |
|---|
| 5507 | [Make pprNameLoc more robust in absence of loc information |
|---|
| 5508 | Pepe Iborra <mnislaih@gmail.com>**20071114233343] |
|---|
| 5509 | [Try to manage the size of the text rendered for ':show bindings' |
|---|
| 5510 | Pepe Iborra <mnislaih@gmail.com>**20071114231601] |
|---|
| 5511 | [Make the Term ppr depth aware |
|---|
| 5512 | Pepe Iborra <mnislaih@gmail.com>**20071114183417] |
|---|
| 5513 | [Use paragraph fill sep where possible |
|---|
| 5514 | Pepe Iborra <mnislaih@gmail.com>**20071114181233] |
|---|
| 5515 | [Make SpecConstr work again |
|---|
| 5516 | simonpj@microsoft.com**20071115084242 |
|---|
| 5517 | |
|---|
| 5518 | In a typo I'd written env instead of env', and as a result RULES are |
|---|
| 5519 | practically guaranteed not to work in a recursive group. This pretty |
|---|
| 5520 | much kills SpecConstr in its tracks! |
|---|
| 5521 | |
|---|
| 5522 | Well done Kenny Lu for spotting this. The fix is easy. |
|---|
| 5523 | |
|---|
| 5524 | Merge into 6.8 please. |
|---|
| 5525 | |
|---|
| 5526 | |
|---|
| 5527 | |
|---|
| 5528 | ] |
|---|
| 5529 | [Documentation only - fix typo in flags reference |
|---|
| 5530 | Tim Chevalier <chevalier@alum.wellesley.edu>**20071115055748] |
|---|
| 5531 | [Avoid making Either String an instance of Monad in the Haddock parser |
|---|
| 5532 | David Waern <david.waern@gmail.com>**20071114204050] |
|---|
| 5533 | [FIX 1463 (implement 'ghc-pkg find-module') |
|---|
| 5534 | claus.reinke@talk21.com**20071109162652 |
|---|
| 5535 | |
|---|
| 5536 | - the ticket asks for a module2package lookup in ghc-pkg |
|---|
| 5537 | (this would be useful to have in cabal, as well) |
|---|
| 5538 | |
|---|
| 5539 | - we can now ask which packages expose a module we need, |
|---|
| 5540 | eg, when preparing a cabal file or when getting errors |
|---|
| 5541 | after package reorganisations: |
|---|
| 5542 | |
|---|
| 5543 | $ ./ghc-pkg-inplace find-module Var |
|---|
| 5544 | c:/fptools/ghc/driver/package.conf.inplace: |
|---|
| 5545 | (ghc-6.9.20071106) |
|---|
| 5546 | |
|---|
| 5547 | $ ./ghc-pkg-inplace find-module Data.Sequence |
|---|
| 5548 | c:/fptools/ghc/driver/package.conf.inplace: |
|---|
| 5549 | containers-0.1 |
|---|
| 5550 | |
|---|
| 5551 | - implemented as a minor variation on listPackages |
|---|
| 5552 | |
|---|
| 5553 | (as usual, it would be useful if one could combine |
|---|
| 5554 | multiple queries into one) |
|---|
| 5555 | |
|---|
| 5556 | ] |
|---|
| 5557 | [remove --define-name from the --help usage message (#1596) |
|---|
| 5558 | Simon Marlow <simonmar@microsoft.com>**20071114153417 |
|---|
| 5559 | |
|---|
| 5560 | ] |
|---|
| 5561 | [FIX #1837: emit deprecated message for unversioned dependencies |
|---|
| 5562 | Simon Marlow <simonmar@microsoft.com>**20071114153010] |
|---|
| 5563 | [Fix #782, #1483, #1649: Unicode GHCi input |
|---|
| 5564 | Simon Marlow <simonmar@microsoft.com>**20071114151411 |
|---|
| 5565 | GHCi input is now treated universally as UTF-8, except for the Windows |
|---|
| 5566 | console where we do the correct conversion from the current code |
|---|
| 5567 | page (see System.Win32.stringToUnicode). |
|---|
| 5568 | |
|---|
| 5569 | That leaves non-UTF-8 locales on Unix as unsupported, but (a) we only |
|---|
| 5570 | accept source files in UTF-8 anyway, and (b) UTF-8 is quite ubiquitous |
|---|
| 5571 | as the default locale. |
|---|
| 5572 | |
|---|
| 5573 | ] |
|---|
| 5574 | [Fix build |
|---|
| 5575 | David Waern <david.waern@gmail.com>**20071114125842 |
|---|
| 5576 | I had forgot to update HaddockLex.hi-boot-6, so the build with 6.2.2 |
|---|
| 5577 | failed. This fixes that. |
|---|
| 5578 | ] |
|---|
| 5579 | [FIX Trac 1662: actually check for existentials in proc patterns |
|---|
| 5580 | simonpj@microsoft.com**20071114112930 |
|---|
| 5581 | |
|---|
| 5582 | I'd fixed the bug for code that should be OK, but had forgotten to |
|---|
| 5583 | make the test for code that should be rejected! |
|---|
| 5584 | |
|---|
| 5585 | Test is arrowfail004 |
|---|
| 5586 | |
|---|
| 5587 | ] |
|---|
| 5588 | [FIX Trac 1888; duplicate INLINE pragmas |
|---|
| 5589 | simonpj@microsoft.com**20071114104701 |
|---|
| 5590 | |
|---|
| 5591 | There are actually three things here |
|---|
| 5592 | - INLINE pragmas weren't being pretty-printed properly |
|---|
| 5593 | - They were being classified into too-narrow boxes by eqHsSig |
|---|
| 5594 | - They were being printed in to much detail by hsSigDoc |
|---|
| 5595 | |
|---|
| 5596 | All easy. Test is rnfail048. |
|---|
| 5597 | |
|---|
| 5598 | ] |
|---|
| 5599 | [Run the -frule-check pass more often (when asked) |
|---|
| 5600 | simonpj@microsoft.com**20071114104632] |
|---|
| 5601 | [GHCi debugger: added a new flag, -fno-print-binding-contents |
|---|
| 5602 | Pepe Iborra <mnislaih@gmail.com>**20071113174539 |
|---|
| 5603 | |
|---|
| 5604 | The contents of bindings show at breakpoints and by :show bindings |
|---|
| 5605 | is rendered using the same printer that :print uses. |
|---|
| 5606 | But sometimes the output it gives spans over too many lines and the |
|---|
| 5607 | user may want to be able to disable it. |
|---|
| 5608 | ] |
|---|
| 5609 | [Fix Trac 1865: GHCi debugger crashes with :print |
|---|
| 5610 | Pepe Iborra <mnislaih@gmail.com>**20071113170113] |
|---|
| 5611 | [Replaced two uses of head b explicit pattern matching |
|---|
| 5612 | Pepe Iborra <mnislaih@gmail.com>**20071013113136] |
|---|
| 5613 | [Print binding contents in :show bindings |
|---|
| 5614 | Pepe Iborra <mnislaih@gmail.com>**20071006123952] |
|---|
| 5615 | [ Leftovers from the 1st GHCi debugger prototype |
|---|
| 5616 | Pepe Iborra <mnislaih@gmail.com>**20071004204718] |
|---|
| 5617 | [Following an indirection doesn't count as a RTTI step |
|---|
| 5618 | Pepe Iborra <mnislaih@gmail.com>**20070928091941] |
|---|
| 5619 | [FIX #1653 (partially): add -X flags to completion for :set |
|---|
| 5620 | Simon Marlow <simonmar@microsoft.com>**20071113153257] |
|---|
| 5621 | [Merge from Haddock: Add <<url>> for images |
|---|
| 5622 | David Waern <david.waern@gmail.com>**20071112220537 |
|---|
| 5623 | A merge of this patch: |
|---|
| 5624 | |
|---|
| 5625 | Mon Aug 7 16:22:14 CEST 2006 Simon Marlow <simonmar@microsoft.com> |
|---|
| 5626 | * Add <<url>> for images |
|---|
| 5627 | Submitted by: Lennart Augustsson |
|---|
| 5628 | |
|---|
| 5629 | Please merge to the 6.8.2 branch. |
|---|
| 5630 | ] |
|---|
| 5631 | [Improve documentation of INLINE, esp its interactions with other transformations |
|---|
| 5632 | simonpj@microsoft.com**20071112160240] |
|---|
| 5633 | [Comment re Trac #1220 |
|---|
| 5634 | simonpj@microsoft.com**20071112154109] |
|---|
| 5635 | [Merge from Haddock: Modify lexing of /../ |
|---|
| 5636 | David Waern <david.waern@gmail.com>**20071112023856 |
|---|
| 5637 | |
|---|
| 5638 | Tue Aug 28 11:19:54 CEST 2007 Simon Marlow <simonmar@microsoft.com> |
|---|
| 5639 | * Modify lexing of /../ |
|---|
| 5640 | This makes /../ more like '..', so that a single / on a line doesn't |
|---|
| 5641 | trigger a parse error. This should reduce the causes of accidental |
|---|
| 5642 | parse errors in Haddock comments; apparently stray / characters are |
|---|
| 5643 | a common source of failures. |
|---|
| 5644 | |
|---|
| 5645 | Please merge this to the 6.8.2 branch. |
|---|
| 5646 | ] |
|---|
| 5647 | [Merge from Haddock: allow blank lines inside code blocks |
|---|
| 5648 | David Waern <david.waern@gmail.com>**20071112013439 |
|---|
| 5649 | |
|---|
| 5650 | Tue Jan 9 14:14:34 CET 2007 Simon Marlow <simonmar@microsoft.com> |
|---|
| 5651 | * allow blank lines inside a @...@ code block |
|---|
| 5652 | |
|---|
| 5653 | Please merge this to the 6.8.2 branch |
|---|
| 5654 | ] |
|---|
| 5655 | [Merge of a patch from the old Haddock branch: |
|---|
| 5656 | David Waern <david.waern@gmail.com>**20071112013143 |
|---|
| 5657 | |
|---|
| 5658 | Fri Jan 5 12:13:41 CET 2007 Simon Marlow <simonmar@microsoft.com> |
|---|
| 5659 | * Fix up a case of extra vertical space after a code block |
|---|
| 5660 | |
|---|
| 5661 | Please merge this to the 6.8.2 branch |
|---|
| 5662 | ] |
|---|
| 5663 | [Remove ex-extralibs from libraries/Makefile |
|---|
| 5664 | Ian Lynagh <igloo@earth.li>**20071111213618] |
|---|
| 5665 | [Remove the X11 and HGL libraries from extralibs |
|---|
| 5666 | Ian Lynagh <igloo@earth.li>**20071111213447 |
|---|
| 5667 | Don Stewart, X11 maintainer, requested we remove X11, and HGL depends on it |
|---|
| 5668 | on Linux (and we don't try to build HGL on Windows). |
|---|
| 5669 | ] |
|---|
| 5670 | [arrows is no longer an extralib |
|---|
| 5671 | Ian Lynagh <igloo@earth.li>**20071027123656] |
|---|
| 5672 | [Turn -fprint-bind-result off by default |
|---|
| 5673 | Ian Lynagh <igloo@earth.li>**20071111001126] |
|---|
| 5674 | [TAG 2007-11-11 |
|---|
| 5675 | Ian Lynagh <igloo@earth.li>**20071111161540] |
|---|
| 5676 | Patch bundle hash: |
|---|
| 5677 | 59daf4383210373d00dd48cc1bb331e67ccabb08 |
|---|