Ticket #2321: SATRewrite.patch

File SATRewrite.patch, 227.8 KB (added by batterseapower, 9 years ago)

SAT rewrite

1Wed Jun 11 13:54:48 BST 2008  Max Bolingbroke <batterseapower@hotmail.com>
2  * Initial SAT fix
4Wed Jun 11 20:35:35 BST 2008  Max Bolingbroke <batterseapower@hotmail.com>
5  * SAT rewrite to fix #2321
7New patches:
9[Initial SAT fix
10Max Bolingbroke <batterseapower@hotmail.com>**20080611125448] {
11hunk ./compiler/main/DynFlags.hs 836
12-    -- static_args   = dopt Opt_StaticArgumentTransformation dflags
13+    static_args   = dopt Opt_StaticArgumentTransformation dflags
14hunk ./compiler/main/DynFlags.hs 890
15-           -- runWhen static_args CoreDoStaticArgs,
16-            -- XXX disabled, see #2321
17+           runWhen static_args (CoreDoPasses [ simpl_gently, CoreDoStaticArgs ]),
18hunk ./compiler/simplCore/SAT.lhs 7
19-               Static Argument Transformation pass
20+                                Static Argument Transformation pass
21hunk ./compiler/simplCore/SAT.lhs 38
22-       should_transform
23+                should_transform
24hunk ./compiler/simplCore/SAT.lhs 56
25-import Var
26+import Var hiding (mkLocalId)
27hunk ./compiler/simplCore/SAT.lhs 60
28+import CoreUtils
29hunk ./compiler/simplCore/SAT.lhs 67
30+import Name
31hunk ./compiler/simplCore/SAT.lhs 70
32-import Panic
33hunk ./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
38hunk ./compiler/simplCore/SAT.lhs 168
41hunk ./compiler/simplCore/SAT.lhs 188
42-       Environment
43+                Environment
44hunk ./compiler/simplCore/SAT.lhs 238
45-       Static Argument Transformation Monad
46+                Static Argument Transformation Monad
47hunk ./compiler/simplCore/SAT.lhs 258
48-  = SatM $ \us env ->
49+  = SatM $ \us env ->
50hunk ./compiler/simplCore/SAT.lhs 286
51-               Utility Functions
52+                                Utility Functions
53hunk ./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)
60hunk ./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:
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
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
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
85+Example: transform this
87+    map :: forall a b. (a->b) -> [a] -> [b]
88+    map = /\ab. \f as -> body[map]
89hunk ./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
104+Note [Shadow binding]
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".
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.
112hunk ./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.)
116hunk ./compiler/simplCore/SAT.lhs 354
117-      Just (tyargs, args) | should_transform args
118+      Just (_, args) | should_transform args
119hunk ./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
124hunk ./compiler/simplCore/SAT.lhs 364
125-      = staticArgsLength > 1           -- THIS IS THE DECISION POINT
126+      = staticArgsLength > 1                              -- THIS IS THE DECISION POINT
127hunk ./compiler/simplCore/SAT.lhs 366
129-    mkNewRhs binder binder' args rhs = let
130-        non_static_args :: [Id]
132+    (rhs_binders, rhs_body) = collectBinders rhs
133+    rhs_val_binders = filter isId rhs_binders
135+    mkNewRhs name' args
136+      = mkLams rhs_binders $
137+                Let (Rec [(bndr', rec_body)]) {-in-} local_body
138+      where
139+        non_static_args :: [Var]
140hunk ./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
155-        local_body = mkApps (Var binder') [Var a | a <- non_static_args]
157-        nonrec_rhs = mkOrigLam local_body
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
178-        mkOrigLam = mkLams rhs_binders
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
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)
192hunk ./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
201hunk ./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
204hunk ./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"
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)
218hunk ./compiler/simplCore/SAT.lhs 398
222[SAT rewrite to fix #2321
223Max Bolingbroke <batterseapower@hotmail.com>**20080611193535] {
224hunk ./compiler/simplCore/SAT.lhs 57
225-import VarEnv
226hunk ./compiler/simplCore/SAT.lhs 67
227+import FiniteMap
228+import VarSet
229+import UniqSet
230+import Outputable
231hunk ./compiler/simplCore/SAT.lhs 87
232-        in (us1, runSAT (satBind bind) us2)
233+        in (us1, fst $ runSAT (satBind bind emptyUniqSet) us2)
234hunk ./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
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'
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
264hunk ./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')
270hunk ./compiler/simplCore/SAT.lhs 120
271-emptySATInfo :: Id -> Maybe (Id, SATInfo)
272-emptySATInfo v = Just (v, ([], []))
274-satExpr :: CoreExpr -> SatM CoreExpr
275-satExpr var@(Var v) = do
276-    updSAEnv (emptySATInfo v)
277-    return var
279-satExpr lit@(Lit _) = do
280-    return lit
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
287hunk ./compiler/simplCore/SAT.lhs 123
288-satExpr app@(App _ _) = do
289-    getAppArgs app
290+type IdAppInfo = (Id, SATInfo)
291hunk ./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
302hunk ./compiler/simplCore/SAT.lhs 128
303-satExpr (Let bind body) = do
304-    body' <- satExpr body
305-    bind' <- satBind bind
306-    return (Let bind' body')
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)
311hunk ./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
317hunk ./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")
324hunk ./compiler/simplCore/SAT.lhs 141
325-satExpr (Cast expr coercion) = do
326-    expr' <- satExpr expr
327-    return (Cast expr' coercion)
329hunk ./compiler/simplCore/SAT.lhs 142
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
354hunk ./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
360hunk ./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
371hunk ./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
379hunk ./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''
390hunk ./compiler/simplCore/SAT.lhs 172
394-                Environment
398hunk ./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)
404hunk ./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)
413hunk ./compiler/simplCore/SAT.lhs 185
414-type SATInfo = ([Staticness Type], [Staticness Id])
415+satExpr lit@(Lit _) _ = do
416+    return (lit, emptyFM, Nothing)
417hunk ./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)
422hunk ./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)
444hunk ./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
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)
470hunk ./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)
480hunk ./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)
486hunk ./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)
491hunk ./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)
497hunk ./compiler/simplCore/SAT.lhs 247
498-Two items of state to thread around: a UniqueSupply and a SATEnv.
499+Thread around a UniqueSupply
500hunk ./compiler/simplCore/SAT.lhs 251
501-  = SatM (UniqSupply -> SATEnv -> (result, SATEnv))
502+  = SatM (UniqSupply -> result)
503hunk ./compiler/simplCore/SAT.lhs 259
504-runSAT (SatM f) us = fst $ f us emptyEnv
505+runSAT (SatM f) us = f us
506hunk ./compiler/simplCore/SAT.lhs 263
507-  = SatM $ \us env ->
508+  = SatM $ \us ->
509hunk ./compiler/simplCore/SAT.lhs 265
510-    case m s1 env              of { (m_result, menv) ->
511+    case m s1                  of { m_result ->
512hunk ./compiler/simplCore/SAT.lhs 267
513-    k' s2 menv }}}
514+    k' s2 }}}
515hunk ./compiler/simplCore/SAT.lhs 271
516-  = SatM $ \us env ->
517+  = SatM $ \us ->
518hunk ./compiler/simplCore/SAT.lhs 273
519-    case m s1 env               of { (_, menv) ->
520-    k s2 menv }}
521+    case m s1                  of { _ ->
522+    k s2 }}
523hunk ./compiler/simplCore/SAT.lhs 277
524-returnSAT v = withEnv $ \env -> (v, env)
526-modifyEnv :: (SATEnv -> SATEnv) -> SatM ()
527-modifyEnv f = SatM $ \_ env -> ((), f env)
529-withEnv :: (SATEnv -> (b, SATEnv)) -> SatM b
530-withEnv f = SatM $ \_ env -> f env
532-projectFromEnv :: (SATEnv -> a) -> SatM a
533-projectFromEnv f = withEnv (\env -> (f env, env))
538-                                Utility Functions
543-getSATInfo :: Id -> SatM (Maybe SATInfo)
544-getSATInfo var = projectFromEnv $ \env -> lookupVarEnv (idSATInfo env) var
546-newSATName :: SatM Name
547-newSATName = SatM $ \us env ->
548-                     (mkSystemVarName (uniqFromSupply us) (fsLit "$sat"), env)
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
558hunk ./compiler/simplCore/SAT.lhs 279
559+getUniqs :: SatM [Unique]
560+getUniqs = SatM $ \us -> uniqsFromSupply us
561hunk ./compiler/simplCore/SAT.lhs 312
562+Note [Binder type capture]
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:
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
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.
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.
604hunk ./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)]
630hunk ./compiler/simplCore/SAT.lhs 377
631-    (rhs_binders, rhs_body) = collectBinders rhs
632-    rhs_val_binders = filter isId rhs_binders
633hunk ./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
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
648hunk ./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]
669hunk ./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
674+    local_body = mkVarApps (Var rec_body_bndr) non_static_args
675+    -- local_body = sat_worker xs
676hunk ./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
684hunk ./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
688hunk ./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
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"
701hunk ./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
712[Fix warnings in TcTyClsDecls
713Ian Lynagh <igloo@earth.li>**20080606213239]
714[Fix warnings in TcHsType
715Ian Lynagh <igloo@earth.li>**20080606204854]
716[Fix warnings in TcSimplify
717Ian Lynagh <igloo@earth.li>**20080606202435]
718[Fix warnings in TcRules
719Ian Lynagh <igloo@earth.li>**20080606200800]
720[Fix warnings in TcInstDcls
721Ian Lynagh <igloo@earth.li>**20080606200534]
722[Fix warnings in TcMType
723Ian Lynagh <igloo@earth.li>**20080606194931]
724[Fix warnings in TcForeign
725Ian Lynagh <igloo@earth.li>**20080606192610]
726[Fix warnings in TcClassDcl
727Ian Lynagh <igloo@earth.li>**20080606191413]
728[Fix a bug in eqPatType
729Ian 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
735[Show whether DEBUG is on in ghc --info
736Ian Lynagh <igloo@earth.li>**20080606184415]
737[Use -fno-toplevel-reorder with gcc >= 4.2 on sparc-solaris; fixes trac #2312
738Ian Lynagh <igloo@earth.li>**20080606133817]
739[Teach configure about amd64/NetBSD; fixes trac #2348
740Ian Lynagh <igloo@earth.li>**20080606130955]
741[Enable the mangler for netbsd/amd64; fixes trac #2347
742Ian Lynagh <igloo@earth.li>**20080606130706]
743[Improve documentation for standalone deriving
745[Fix Trac #2334: validity checking for type families
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.
753 I also refactored the interface to tcFamInstDecl1 slightly.
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.
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
765    data instance F [a] = ...
766    deriving instance (Eq a, Eq b) => Eq (F [(a,b)])
768 So tcLookupFamInstExact can a bit more forgiving than it was.
772[Vital follow-up to fix of Trac #2045
775 Sorry -- my 'validate' didn't work right and I missed a trick.
776 This patch must accompany
778  * Fix Trac #2045: use big-tuple machiney for implication constraints
782[Fix Trac #2045: use big-tuple machiney for implication constraints
784[Comments only
786[Desugar multiple polymorphic bindings more intelligently
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.
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.)
798 See Note [Abstracting over tyvars only]. 
800 The extra behaviour can be disabled with the (static) flag
802        -fno-ds-multi-tyvar
804 in case we want to experiment with switching it on or off.  There is
805 essentially-zero effect on the nofib suite though.
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.
811[Add non-recursive let-bindings for types
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.
819 * The binding is always non-recursive
820 * The simplifier immediately eliminates it by substitution
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.
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.
834[Fix Trac #2339: reify (mkName "X")
836[Fix Trac #2310: result type signatures are not supported any more
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.
843[Sort modules and packages in debug print (reduce test wobbles)
846 This affects only the debug print TcRnDriver.pprTcGblEnv, and eliminates
847 test-suite wobbling (affected me for tc168, tc231)
850[Fix #2334: tyvar binders can have Names inside (equality predicates)
851Simon Marlow <marlowsd@gmail.com>**20080604113002]
852[fix pointer tagging bug in removeIndirections (fixes stableptr003)
853Simon Marlow <marlowsd@gmail.com>**20080604105458]
854[Fix unreg build
855Simon Marlow <marlowsd@gmail.com>**20080604093653]
856[tiny tweak to the stack squeezing heuristic (fixes cg060)
857Simon Marlow <marlowsd@gmail.com>**20080604091244]
858[MacOS installer: don't quote XCODE_EXTRA_CONFIGURE_ARGS
859Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080604021321]
860[MacOS installer: terminate build on intermediate failure
861Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080604020155]
862[Fix Trac #2331 (error message suggestion)
864[Improve documentation of RULES
866[Improve documentation for INLINE pragma
868[add debugDumpTcRn and use it for some debugging output
869Simon Marlow <marlowsd@gmail.com>**20080603112030]
870[Turn "NOTE: Simplifier still going..." message into a WARN()
871Simon Marlow <marlowsd@gmail.com>**20080603105431]
872[remove the "expanding to size" messages
873Simon Marlow <marlowsd@gmail.com>**20080603094546]
874[New flag: -dno-debug-output
875Simon 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>
884[-no-link-chk has been a no-op since at least 6.0; remove it
885Simon Marlow <marlowsd@gmail.com>**20080603082041]
886[-no-link-chk is a relic
887Simon Marlow <marlowsd@gmail.com>**20080603081904]
888[Shorten debug messages
890[Fix minor layout issue (whitespace only)
892[MacOS installer: clean up Xcode project spec
893Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080602070705]
894[Fix validate: -Werror bug in patch "Replacing copyins and copyouts..."
895Simon Marlow <marlowsd@gmail.com>**20080602144945]
896[FIX #2231: add missing stack check when applying a PAP
897Simon Marlow <marlowsd@gmail.com>**20080602143726
898 This program makes a PAP with 203 arguments :-)
900[-fforce-recomp should be unnecessary for Main.hs in stage[23] now
901Simon Marlow <marlowsd@gmail.com>**20080602133801]
902[Missing import in C-- parser
904[TAG 2008-06-01
905Ian Lynagh <igloo@earth.li>**20080601155241]
906[Fix a bug to do with recursive modules in one-shot mode
907Simon 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.
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.
919[Replacing copyins and copyouts with data-movement instructions
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)
934[disable SAT for now (see #2321)
935Simon Marlow <marlowsd@gmail.com>**20080530112043]
936[Add dph packages to build system
937Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080530050340]
938[PackageMaker target depends on deployment target
939Manuel 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
941Simon Marlow <marlowsd@gmail.com>**20080529111023]
942[Make it less fatal to not call ioManagerStart()
943Simon Marlow <marlowsd@gmail.com>**20080529110957
944 For clients that forget to do hs_add_root()
946[FIX BUILD with GHC 6.4.x
947Simon Marlow <marlowsd@gmail.com>**20080529132544]
948[FIX #1970: ghci -hide-all-packages should work
949Simon Marlow <marlowsd@gmail.com>**20080528154528]
950[Cmm back end upgrades
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
972[make framework-pkg needs to cope with missing DSTROOT
973Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080527113007]
974[Use MD5 checksums for recompilation checking (fixes #1372, #1959)
975Simon Marlow <marlowsd@gmail.com>**20080528125258
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.
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.
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.
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.
997[don't make -ddump-if-trace imply -no-recomp
998Simon Marlow <marlowsd@gmail.com>**20080523140719]
999[clarify that unsafeCoerce# :: Float# -> Int# is not safe (see #2209)
1000Simon Marlow <marlowsd@gmail.com>**20080527090244]
1001[when linking, ignore unknown .reloc section that appeared in gcc 3.4.5(?)
1003[TAG 2008-05-28
1004Ian Lynagh <igloo@earth.li>**20080528003600]
1005[Simplify specifying that some libraries need to use the build.* rules
1006Ian Lynagh <igloo@earth.li>**20080526160218
1007 Now you just add them to SUBDIRS_BUILD instead of SUBDIRS.
1009[Cope with libraries in libraries/foo/bar rather than just libraries/foo
1010Ian Lynagh <igloo@earth.li>**20080526135612
1011 You need to use the build.* rules rather than the make.* rules, though.
1013[Fix fwrite$UNIX2003 symbols when cross-compiling for Tiger
1014Manuel 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).
1021[document :source command for GHCi, point to Haskell wiki
1024        as discussed in this thread:
1025        http://www.haskell.org/pipermail/glasgow-haskell-users/2008-April/014614.html
1028[Do some stack fiddling in stg_unblockAsyncExceptionszh_ret
1029Ian Lynagh <igloo@earth.li>**20080523032508
1030 This fixes a segfault in #1657
1032[Fix warnings in TcTyDecls
1033Ian Lynagh <igloo@earth.li>**20080521004251]
1034[Fix whitespace in TcTyDecls
1035Ian Lynagh <igloo@earth.li>**20080521003935]
1036[Ensure runhaskell is rebuild in stage2
1037Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080522044900]
1038[Fix Trac #1061: refactor handling of default methods
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.
1046 So this patch refactors to insteadl all us to generate the
1047 *post* typechecked code directly for default methods.
1050[Comment typo
1052[Fix Trac #2292: improve error message for lone signatures
1055 Refactoring reduces code and improves error messages
1058[Fix Trac #2293: improve error reporting for duplicate declarations
1060[Tuples cannot contain unboxed types
1063 This bug allowed, for example
1065   f = let x = ( 1#, 'x' ) in x
1067 which is ill-typed because you can't put an unboxed value in a tuple.
1068 Core Lint fails on this program.
1070 The patch makes the program be rejcted up-front.
1074[Make TcType warning-free
1075Ian Lynagh <igloo@earth.li>**20080520214852]
1076[Teach push-all how to send as well
1077Ian Lynagh <igloo@earth.li>**20080517142112]
1078[Make TcUnify warning-free
1079Ian Lynagh <igloo@earth.li>**20080519111100]
1080[Fix a comment typo
1081Ian Lynagh <igloo@earth.li>**20080519094126]
1082[Detab TcUnify
1083Ian Lynagh <igloo@earth.li>**20080519094056]
1084[FIX #1955: confusion between .exe.hp and .hp suffixes for heap profiles
1085Simon Marlow <simonmar@microsoft.com>**20080519125101
1086 Now we use <prog>.hp and <prog>.prof consistently.
1088[sort the output of :show packages
1089Simon Marlow <marlowsd@gmail.com>**20080520084221]
1090[update the "perf" settings to match the default
1091Simon Marlow <marlowsd@gmail.com>**20080520080535]
1092[use -O2 for libraries and stage2 compiler by default
1093Simon Marlow <marlowsd@gmail.com>**20080520080525]
1094[bump GHC's maximum stack size to 64Mb (see #2002)
1095Simon Marlow <marlowsd@gmail.com>**20080519125333]
1096[Add -Odph
1097Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080520031913
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.
1103[Make -f[no-]method-sharing a dynamic flag
1104Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080520025956
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.
1109[documentation for ZipDataflow
1110Norman Ramsey <nr@eecs.harvard.edu>**20080520032454]
1111[Make TcBinds warning-free
1112Ian Lynagh <igloo@earth.li>**20080518133140]
1113[Detab TcBinds
1114Ian Lynagh <igloo@earth.li>**20080518125606]
1115[Move the register-inplace special-case stuff into the ghc-prim package
1116Ian Lynagh <igloo@earth.li>**20080517002224]
1117[Libraries Makefile Hack for ndp
1118Ian Lynagh <igloo@earth.li>**20080516235818
1119 We use the "build" rather than "make" target
1121[When building libraries, we need to register them if we use the "build" targets
1122Ian Lynagh <igloo@earth.li>**20080516235352
1123 We currently only use the "make" targets, which already register the package.
1125[Add dummy LICENSE file to make Cabal go through
1126Tim Chevalier <chevalier@alum.wellesley.edu>**20080517025351
1128 Add a LICENSE file that just points to the GHC license.
1130[FIX #2257: timer_settime() hangs during configure
1131Simon 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.
1138[validate fix: eliminate a warning
1139Simon Marlow <marlowsd@gmail.com>**20080516095947]
1140[validate fix: eliminate a warning on non-Windows
1141Simon Marlow <marlowsd@gmail.com>**20080515142518]
1142[FIX #2014: Template Haskell w/ mutually recursive modules
1143Simon Marlow <marlowsd@gmail.com>**20080515134515
1144 Try to load interfaces in getLinkDeps
1146[Document ghc-pkg find-module, substring matching, and multi-field selection
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
1157[Improve the treatment of 'seq' (Trac #2273)
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
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.
1169 However fix (a) is a bit fragile, so I did (b) too:
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.
1177[don't rebuild PrimEnv if genprimopcode and/or primops.txt don't exist
1178Tim Chevalier <chevalier@alum.wellesley.edu>**20080515230405
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.
1182[Fix a division-by-zero when +RTS -V0 is given
1183Ian Lynagh <igloo@earth.li>**20080426184355
1184 In delayzh_fast we act as if tickInterval was 50, not 0.
1186[Cabalize ext-core tools
1187Tim Chevalier <chevalier@alum.wellesley.edu>**20080514235341
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.
1192 Also updated genprimopcode to reflect the new module hierarchy
1193 for the Core tools.
1195[Remove Distribution.Compat.Char from compat again
1196Ian Lynagh <igloo@earth.li>**20080514125152
1197 Cabal now does this differently.
1199[Fix an assertion
1200Ian Lynagh <igloo@earth.li>**20080426110115
1201 We were checking that a pointer was correctly tagged, but after we had
1202 untagged it.
1204[Fix sin/cos/tan on x86; trac #2059
1205Ian 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.
1209[FIX #1288: GHCi wasn't adding the @n suffix to stdcalls on Windows
1210Simon Marlow <simonmar@microsoft.com>**20080514092742]
1211[FIX #2276: foreign import stdcall "&foo" doesn't work
1212Simon 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.
1217[Use -fffi when compiling Cabal stuff with the bootstrapping compiler
1218Ian Lynagh <igloo@earth.li>**20080513211128]
1219[Use zipLazy from Util in VectType, rather than defining our own lazy_zip
1220Ian Lynagh <igloo@earth.li>**20080513202154]
1221[Add a type signature to help GHC 6.4
1222Ian Lynagh <igloo@earth.li>**20080513200641
1223 Needed in lieu of -XRelaxedPolyRec
1225[Rewrite zipLazy to be warning-free for GHC 6.4
1226Ian Lynagh <igloo@earth.li>**20080513193901]
1227[Add Distribution.Compat.Char to compat
1228Ian Lynagh <igloo@earth.li>**20080513192243]
1229[Add Distribution.Compat.Exception to the compat library
1230Ian Lynagh <igloo@earth.li>**20080513190022]
1231[Fix spelling of nonexistEnt
1232Ian Lynagh <igloo@earth.li>**20080513135158]
1233[FIX #1641: don't add auto sccs to compiler-generated bindings
1234Simon 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.
1239[Fix the Windows build; the new Cabal doesn't like --prefix=/foo
1240Ian Lynagh <igloo@earth.li>**20080512170507]
1241[Pull the configure options out into a variable in libraries/Makefile
1242Ian Lynagh <igloo@earth.li>**20080511203932]
1243[typo in rules example. spotted by vixey@#haskell
1244Don Stewart <dons@galois.com>**20080512182435]
1245[Fixes to via-C prototype generation (FIX BUILD on Windows)
1246Simon Marlow <simonmar@microsoft.com>**20080512110643
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.
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().
1261 For more details see
1262 http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/PprC
1264[doc tweak
1265Simon Marlow <marlowsd@gmail.com>**20080512104030]
1266[FIX #2234: don't generate <prog>.prof unless we're going to put something in it
1267Simon Marlow <marlowsd@gmail.com>**20080512104020]
1268[FIX #1861: floating-point constants for infinity and NaN in via-C
1269Simon Marlow <marlowsd@gmail.com>**20080512103847]
1270[Tell the mangler how to mangle for amd64/freebsd; fixes trac #2072
1271Ian Lynagh <igloo@earth.li>**20080511182011]
1272[Follow distPref changes in Cabal
1273Ian Lynagh <igloo@earth.li>**20080511144539]
1274[Follow Cabal changes in ghci/Linker
1275Ian Lynagh <igloo@earth.li>**20080511005253]
1276[Follow changes in Cabal
1277Ian Lynagh <igloo@earth.li>**20080510225552]
1278[Remove redundant imports from Inst
1279Ian Lynagh <igloo@earth.li>**20080510220452]
1280[Fix a warning when DEBUG is not on
1281Ian Lynagh <igloo@earth.li>**20080510220329]
1282[Update compat for changes to Cabal
1283Ian Lynagh <igloo@earth.li>**20080510211901]
1284[Update ghc-pkg to follow Cabal changes
1285Ian Lynagh <igloo@earth.li>**20080510211035]
1286[Make TcGenDeriv warning-free
1287Ian Lynagh <igloo@earth.li>**20080506210858]
1288[Make TcMatches warning-free
1289Ian Lynagh <igloo@earth.li>**20080506204254]
1290[Make TcHsSyn warning-free
1291Ian Lynagh <igloo@earth.li>**20080506201829]
1292[Make TcRnMonad warning-free
1293Ian Lynagh <igloo@earth.li>**20080506193359]
1294[Make TcDefaults warning-free
1295Ian Lynagh <igloo@earth.li>**20080506191728]
1296[Make TcArrows warning-free
1297Ian Lynagh <igloo@earth.li>**20080506191141]
1298[TcSplice is now mostly warning-free
1299Ian 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.
1304[Make Inst warning-free
1305Ian Lynagh <igloo@earth.li>**20080506173842]
1306[Add a panic for lookupPred EqPred
1307Ian 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.
1312[Make FamInst warning-free
1313Ian Lynagh <igloo@earth.li>**20080506171031]
1314[Fix context for fwd_pure_anal to match that of forward_sol
1316[FIX validate: Fix warnings in new literal code
1317Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080507035417
1319 Validate uses -Werror so the warnings broke it.
1321[Vectorise even with -O0
1322Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080507020055]
1323[Remove ilxGen; part of trac #2243
1324Ian Lynagh <igloo@earth.li>**20080506104456]
1325[Remove javaGen; part of trac #2243
1326Ian Lynagh <igloo@earth.li>**20080506104307]
1327[Add a comment about why DsMeta needs the warning kludge
1328Ian Lynagh <igloo@earth.li>**20080506103506]
1329[Fix Trac #2246; overhaul handling of overloaded literals
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.
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.
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 }
1350 data OverLitVal
1351   = HsIntegral   !Integer      -- Integer-looking literals;
1352   | HsFractional !Rational     -- Frac-looking literals
1353   | HsIsString   !FastString   -- String-looking literals
1356[Fix type signature to work without -XRelaxedPolyRec, and hence earlier GHCs
1358[Eliminate a warning for compiler/basicTypes/OccName.lhs
1359Thorkil Naur <naur@post11.tele.dk>**20080504191511]
1360[External Core tools: add note to README about where to find documentation
1361Tim Chevalier <chevalier@alum.wellesley.edu>**20080505004603]
1362[Some External Core doc fixes
1363Tim Chevalier <chevalier@alum.wellesley.edu>**20080505003955]
1364[External Core tools: track new syntax for newtypes
1365Tim Chevalier <chevalier@alum.wellesley.edu>**20080505001050
1367 Update External Core tools to reflect new syntax for
1368 newtypes. (Notice that the typechecker is 90 lines shorter!)
1370 Also: improve dependency-finding, miscellaneous refactoring.
1372[Improve External Core newtype syntax
1373Tim Chevalier <chevalier@alum.wellesley.edu>**20080504230233
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!
1382[Remove a duplicate module import in BuildTyCl
1383Ian Lynagh <igloo@earth.li>**20080504222023]
1384[Make SimplEnv warning-free
1385Ian Lynagh <igloo@earth.li>**20080504213123]
1386[Make SimplUtils warning-free
1387Ian Lynagh <igloo@earth.li>**20080504212447]
1388[Remove a hack for GHC 3.03 in SimplMonad
1389Ian Lynagh <igloo@earth.li>**20080504205935]
1390[Make SimplMonad warning-free
1391Ian Lynagh <igloo@earth.li>**20080504205630]
1392[Make LiberateCase warning-free
1393Ian Lynagh <igloo@earth.li>**20080504204729]
1394[Make FloatOut warning-free
1395Ian Lynagh <igloo@earth.li>**20080504204058]
1396[Make FloatIn warning-free
1397Ian Lynagh <igloo@earth.li>**20080504202538]
1398[Make SetLevels warning-free
1399Ian Lynagh <igloo@earth.li>**20080504201710]
1400[Make Vectorise warning-free
1401Ian Lynagh <igloo@earth.li>**20080504195430]
1402[Remove some dead code from VectType
1403Ian Lynagh <igloo@earth.li>**20080504194432]
1404[Make VectType warning-free
1405Ian Lynagh <igloo@earth.li>**20080504194335]
1406[Make IfaceEnv warning-free
1407Ian Lynagh <igloo@earth.li>**20080504190944]
1408[Make IfaceSyn warning-free
1409Ian Lynagh <igloo@earth.li>**20080504190710]
1410[Make IfaceType warning-free
1411Ian Lynagh <igloo@earth.li>**20080504183529]
1412[Make BuildTyCl warning-free
1413Ian Lynagh <igloo@earth.li>**20080504182336]
1414[Make BinIface warning-free
1415Ian Lynagh <igloo@earth.li>**20080504182031]
1416[Make LoadIface warning-free
1417Ian Lynagh <igloo@earth.li>**20080504180847]
1418[Make MkIface warning-free
1419Ian Lynagh <igloo@earth.li>**20080504174952]
1420[Make TcIface warning-free
1421Ian Lynagh <igloo@earth.li>**20080504172906]
1422[Make StgLint warning-free
1423Ian Lynagh <igloo@earth.li>**20080504151343]
1424[Make CoreToStg warning-free
1425Ian Lynagh <igloo@earth.li>**20080504145432]
1426[Make DsArrows warning-free
1427Ian Lynagh <igloo@earth.li>**20080504140443]
1428[Make DsCCall warning-free
1429Ian Lynagh <igloo@earth.li>**20080504132635]
1430[Make DsMeta almost warning-free
1431Ian Lynagh <igloo@earth.li>**20080504125742
1432 GHC claims that OccName is unused, but it is wrong.
1434[Make MatchLit warning-free
1435Ian Lynagh <igloo@earth.li>**20080504114848]
1436[Add an Outputable EquationInfo instance
1437Ian Lynagh <igloo@earth.li>**20080504114827]
1438[Whitespace only (TcInstDcls)
1439Ian Lynagh <igloo@earth.li>**20080504111101]
1440[Fix the stage 1 build
1441Ian Lynagh <igloo@earth.li>**20080504011733]
1442[Remove unused function mapInScopeSet
1443Ian Lynagh <igloo@earth.li>**20080503191450]
1444[Make part of the parser a bit stricter
1445Ian Lynagh <igloo@earth.li>**20080502225717]
1446[Fix some space-wasting in the Parser
1447Ian Lynagh <igloo@earth.li>**20080502225645
1448 (fst x, snd x) => x
1450[Make ByteCodeGen warning-free
1451Ian Lynagh <igloo@earth.li>**20080504002527]
1452[Tiny code tweak in the definition of io in GhciMonad; no semantic change
1453Ian Lynagh <igloo@earth.li>**20080503235211]
1454[Make GhciMonad warning-free
1455Ian Lynagh <igloo@earth.li>**20080503235135]
1456[Tiny code recatoring in GhciTags
1457Ian Lynagh <igloo@earth.li>**20080503234539]
1458[Make GhciTags warning-free
1459Ian Lynagh <igloo@earth.li>**20080503234441]
1460[Make ObjLink warning-free
1461Ian Lynagh <igloo@earth.li>**20080503233418]
1462[Remove a hack from a time when ghc couldn't do seq
1463Ian Lynagh <igloo@earth.li>**20080503232832]
1464[Make RnExpr warning-free
1465Ian Lynagh <igloo@earth.li>**20080503232704]
1466[Make RnEnv warning-free
1467Ian Lynagh <igloo@earth.li>**20080503223430]
1468[Fix warnings in RnNames
1469Ian Lynagh <igloo@earth.li>**20080503221512]
1470[Make RnBinds warning-free
1471Ian Lynagh <igloo@earth.li>**20080503213149]
1472[Change a mappM to mapM_
1473Ian Lynagh <igloo@earth.li>**20080503203354]
1474[Make RnPat warning-free
1475Ian Lynagh <igloo@earth.li>**20080503203300]
1476[Make RnHsDoc warning-free
1477Ian Lynagh <igloo@earth.li>**20080503201343]
1478[Make RnSource warning-free
1479Ian Lynagh <igloo@earth.li>**20080503200932]
1480[Make RnHsSyn warning-free
1481Ian Lynagh <igloo@earth.li>**20080503170649]
1482[Whitespace only
1483Ian Lynagh <igloo@earth.li>**20080503170053]
1484[Vectorise polymorphic let bindings
1485Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080504054006]
1486[Improve syntax for primitive coercions in External Core
1487Tim Chevalier <chevalier@alum.wellesley.edu>**20080504024304
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.
1493[Fix External Core interpreter
1494Tim Chevalier <chevalier@alum.wellesley.edu>**20080503231044
1496 The External Core interpreter works (in a limited sense).
1497 For details, see the README.
1499 This means we now have a marginally functioning set of
1500 External Core tools.
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.
1506[replace hints with kinds in parser as well
1507Norman Ramsey <nr@eecs.harvard.edu>**20080503224720]
1508[replace Cmm 'hint' with 'kind'
1509Norman 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
1514[new version of ZipDataflow
1515Norman 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.
1524[minor changes to Cmm left over from September 2007
1525Norman 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...
1531[Make darcs-all act on all repos in libraries/, not just boot/extra libs
1532Ian Lynagh <igloo@earth.li>**20080502174753]
1533[When validating, configure with "--prefix=`pwd`/inst"
1534Ian 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.
1540[Improve the unboxed types documentation
1541Ian Lynagh <igloo@earth.li>**20080430152508
1542 Mainly adding descriptions of unboxed literals,
1544[sumP on doubles and int
1546[Fixed vect decl for sumP, enumfromToP
1548[Missing .0 on float constant.
1549Don Stewart <dons@galois.com>**20080501000517]
1550[Replace C99 exp2f(32) call in __2Int_encodeDouble
1551Don Stewart <dons@galois.com>**20080430214827
1552 with constant 4294967296.
1554 exp2f is a C99-ism not availabl everywhere. Replace it
1555 with its result. Helps building on OpenBSD>
1558[Use panic rather than error in RegLiveness
1559Ian Lynagh <igloo@earth.li>**20080430131349]
1560[Update an error message
1561Ian Lynagh <igloo@earth.li>**20080430131317
1562 error "RegisterAlloc.livenessSCCs" -> error "RegLiveness.livenessSCCs"
1564[Update a panic message
1565Ian Lynagh <igloo@earth.li>**20080430131021
1566 It was (panic "RegisterAlloc.joinToTargets"), but had since moved to
1567 RegAllocLinear.makeRegMovementGraph.
1569[Remove BitSet, FieldLabel, RegisterAlloc from compiler/package.conf.in
1570Ian Lynagh <igloo@earth.li>**20080430130251
1571 The modules no longer exist. Spotted by Marc Weber.
1573[Improve documentation of RULES pragmas
1575[change topHandlerFastExit to topHandler, so the terminal state gets restored (#2228)
1576Simon Marlow <simonmar@microsoft.com>**20080429222442]
1577[don't turn off stdin/stdout buffering after loading a module with ghc -e (#2228)
1578Simon Marlow <simonmar@microsoft.com>**20080429222409]
1579[FIX #1933: use a better test for timer_create()
1580Simon Marlow <simonmar@microsoft.com>**20080429212945]
1581[Fix Trac #1969: perfomance bug in the specialiser
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.
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.
1594 Oh, and Specialise is now warning-free too.
1597[Fix Trac #2238: do not use newtype for a class with equality predicates
1600 See Note [Class newtypes and equality predicates] in this module.
1603[Add :list to ghci's :? help; fixes trac #2217
1604Ian Lynagh <igloo@earth.li>**20080427190049]
1605[Fix an error if an SCC name contains a space; fixes trac #2071
1606Ian Lynagh <igloo@earth.li>**20080427114808]
1607[Fix build on PPC: Add some missing parentheses
1608Ian Lynagh <igloo@earth.li>**20080427103545]
1609[Refactor some code a bit, and improve an error
1610Ian 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.
1614[Whitespace changes only
1615Ian Lynagh <igloo@earth.li>**20080426010908]
1616[Fix the ticky ticky build
1617Ian Lynagh <igloo@earth.li>**20080425140434
1618 Include TickyCounters.h in Stg.h if we are doing Ticky Ticky.
1620[Fix a couple of format strings in Ticky.c
1621Ian Lynagh <igloo@earth.li>**20080425134725]
1622[Comment out some unused code in Ticky.c
1623Ian Lynagh <igloo@earth.li>**20080425134307]
1624[Spelling fixes in glasgow_exts.xml
1625Samuel Bronson <naesten@gmail.com>**20080415232626
1626 Also adds a <para></para> element and replaces an occurance of SGML
1627 with XML...
1629[Vectorisation of: enumFromTo, div, intSqrt
1631[Fix int64ToInteger 0xFFFFFFFF00000000 on 32bit machine; trac #2223
1632Ian Lynagh <igloo@earth.li>**20080424131526
1633 Patch from Mike Gunter.
1635[Add 123## literals for Word#
1636Ian Lynagh <igloo@earth.li>**20080423161115]
1637[Whitespace changes only
1638Ian Lynagh <igloo@earth.li>**20080423143553]
1639[Added support for vectorising emptyP, squareRoot, combineP
1641[Add back an erroneously removed #include "HsVersions.h"
1642Ian Lynagh <igloo@earth.li>**20080423110930]
1643[Include HsVersions.h where necessary
1644Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080423042820]
1645[Make a panic slightly more helpful
1646Ian Lynagh <igloo@earth.li>**20080422164916]
1647[Fix build
1648Ian Lynagh <igloo@earth.li>**20080422133838]
1649[Fix build
1650Ian Lynagh <igloo@earth.li>**20080422124919]
1651[(F)SLIT -> (f)sLit in SimplUtils
1652Ian Lynagh <igloo@earth.li>**20080422124908]
1653[(F)SLIT -> (f)sLit in HsBinds
1654Ian Lynagh <igloo@earth.li>**20080422122319]
1655[(F)SLIT -> (f)sLit in StaticFlags
1656Ian Lynagh <igloo@earth.li>**20080422122226]
1657[Build fixes
1658Ian Lynagh <igloo@earth.li>**20080422115500]
1659[Change the last few (F)SLIT's into (f)sLit's
1660Ian Lynagh <igloo@earth.li>**20080422114713]
1661[FSLIT -> fsLit in PrelNames
1662Ian Lynagh <igloo@earth.li>**20080422113907]
1663[Fix warnings in PrelNames
1664Ian Lynagh <igloo@earth.li>**20080422113817]
1665[(F)SLIT -> (f)sLit in CmmParse
1666Ian Lynagh <igloo@earth.li>**20080422110857]
1667[PrelRules is now warning free
1668Ian Lynagh <igloo@earth.li>**20080413124325]
1669[Remove a warning
1670Ian Lynagh <igloo@earth.li>**20080413103120]
1671[PrelInfo is now warning-free
1672Ian Lynagh <igloo@earth.li>**20080413102906]
1673[TysPrim is now warning-free
1674Ian Lynagh <igloo@earth.li>**20080413101757]
1675[TysWiredIn is now warning-free
1676Ian Lynagh <igloo@earth.li>**20080413094012]
1677[(F)SLIT -> (f)sLit in TcSplice
1678Ian Lynagh <igloo@earth.li>**20080412180126]
1679[(F)SLIT -> (f)sLit in Convert
1680Ian Lynagh <igloo@earth.li>**20080412180037]
1681[(F)SLIT -> (f)sLit in InteractiveUI
1682Ian Lynagh <igloo@earth.li>**20080412180018]
1683[(F)SLIT -> (f)sLit in InteractiveEval
1684Ian Lynagh <igloo@earth.li>**20080412175850]
1685[(F)SLIT -> (f)sLit in RtClosureInspect
1686Ian Lynagh <igloo@earth.li>**20080412175734]
1687[(F)SLIT -> (f)sLit in Linker
1688Ian Lynagh <igloo@earth.li>**20080412175700]
1689[(F)SLIT -> (f)sLit in ByteCodeGen
1690Ian Lynagh <igloo@earth.li>**20080412175456]
1691[(F)SLIT -> (f)sLit in DsMeta
1692Ian Lynagh <igloo@earth.li>**20080412175407]
1693[(F)SLIT -> (f)sLit in PprTyThing
1694Ian Lynagh <igloo@earth.li>**20080412163811]
1695[(F)SLIT -> (f)sLit in DriverMkDepend
1696Ian Lynagh <igloo@earth.li>**20080412163724]
1697[(F)SLIT -> (f)sLit in GHC
1698Ian Lynagh <igloo@earth.li>**20080412163604]
1699[(F)SLIT -> (f)sLit in DriverPipeline
1700Ian Lynagh <igloo@earth.li>**20080412163406]
1701[(F)SLIT -> (f)sLit in HscMain
1702Ian Lynagh <igloo@earth.li>**20080412163320]
1703[(F)SLIT -> (f)sLit in TcRnDriver
1704Ian Lynagh <igloo@earth.li>**20080412162930]
1705[(F)SLIT -> (f)sLit in TcDefaults
1706Ian Lynagh <igloo@earth.li>**20080412162824]
1707[(F)SLIT -> (f)sLit in TcRules
1708Ian Lynagh <igloo@earth.li>**20080412162705]
1709[(F)SLIT -> (f)sLit in TcForeign
1710Ian Lynagh <igloo@earth.li>**20080412162632]
1711[(F)SLIT -> (f)sLit in TcExpr
1712Ian Lynagh <igloo@earth.li>**20080412162533]
1713[(F)SLIT -> (f)sLit in TcArrows
1714Ian Lynagh <igloo@earth.li>**20080412162403]
1715[(F)SLIT -> (f)sLit in TcMatches
1716Ian Lynagh <igloo@earth.li>**20080412162314]
1717[(F)SLIT -> (f)sLit in TcInstDcls
1718Ian Lynagh <igloo@earth.li>**20080412162152]
1719[(F)SLIT -> (f)sLit in FamInst
1720Ian Lynagh <igloo@earth.li>**20080412162033]
1721[(F)SLIT -> (f)sLit in TcDeriv
1722Ian Lynagh <igloo@earth.li>**20080412161958]
1723[(F)SLIT -> (f)sLit in TcGenDeriv
1724Ian Lynagh <igloo@earth.li>**20080412161827]
1725[(F)SLIT -> (f)sLit in TcTyClsDecls
1726Ian Lynagh <igloo@earth.li>**20080412161708]
1727[(F)SLIT -> (f)sLit in TcClassDcl
1728Ian Lynagh <igloo@earth.li>**20080412161517]
1729[(F)SLIT -> (f)sLit in RnExpr
1730Ian Lynagh <igloo@earth.li>**20080412161410]
1731[(F)SLIT -> (f)sLit in TcBinds
1732Ian Lynagh <igloo@earth.li>**20080412161320]
1733[(F)SLIT -> (f)sLit in TcHsType
1734Ian Lynagh <igloo@earth.li>**20080412161045]
1735[(F)SLIT -> (f)sLit in Generics
1736Ian Lynagh <igloo@earth.li>**20080412160944]
1737[(F)SLIT -> (f)sLit in TcSimplify
1738Ian Lynagh <igloo@earth.li>**20080412160715]
1739[(F)SLIT -> (f)sLit in TcTyFuns
1740Ian Lynagh <igloo@earth.li>**20080412160559]
1741[(F)SLIT -> (f)sLit in Inst
1742Ian Lynagh <igloo@earth.li>**20080412160453]
1743[(F)SLIT -> (f)sLit in RnSource
1744Ian Lynagh <igloo@earth.li>**20080412160348]
1745[(F)SLIT -> (f)sLit in RnBinds
1746Ian Lynagh <igloo@earth.li>**20080412160232]
1747[(F)SLIT -> (f)sLit in RnPat
1748Ian Lynagh <igloo@earth.li>**20080412160138]
1749[(F)SLIT -> (f)sLit in RnTypes
1750Ian Lynagh <igloo@earth.li>**20080412160039]
1751[(F)SLIT -> (f)sLit in RnNames
1752Ian Lynagh <igloo@earth.li>**20080412155923]
1753[(F)SLIT -> (f)sLit in RnEnv
1754Ian Lynagh <igloo@earth.li>**20080412155810]
1755[(F)SLIT -> (f)sLit in TcEnv
1756Ian Lynagh <igloo@earth.li>**20080412155639]
1757[(F)SLIT -> (f)sLit in CSE
1758Ian Lynagh <igloo@earth.li>**20080412155551]
1759[(F)SLIT -> (f)sLit in Simplify
1760Ian Lynagh <igloo@earth.li>**20080412155517]
1761[(F)SLIT -> (f)sLit in SimplEnv
1762Ian Lynagh <igloo@earth.li>**20080412155311]
1763[(F)SLIT -> (f)sLit in FloatOut
1764Ian Lynagh <igloo@earth.li>**20080412155114]
1765[(F)SLIT -> (f)sLit in Specialse
1766Ian Lynagh <igloo@earth.li>**20080412155034]
1767[(F)SLIT -> (f)sLit in SpecConstr
1768Ian Lynagh <igloo@earth.li>**20080412154959]
1769[(F)SLIT -> (f)sLit in Vectorise
1770Ian Lynagh <igloo@earth.li>**20080412154718]
1771[(F)SLIT -> (f)sLit in VectType
1772Ian Lynagh <igloo@earth.li>**20080412154322]
1773[(F)SLIT -> (f)sLit in VectUtils
1774Ian Lynagh <igloo@earth.li>**20080412154229]
1775[(F)SLIT -> (f)sLit in VectMonad
1776Ian Lynagh <igloo@earth.li>**20080412154116]
1777[(F)SLIT -> (f)sLit in VectBuiltIn
1778Ian Lynagh <igloo@earth.li>**20080412154002]
1779[(F)SLIT -> (f)sLit in SimplMonad
1780Ian Lynagh <igloo@earth.li>**20080412153630]
1781[(F)SLIT -> (f)sLit in CoreToStg
1782Ian Lynagh <igloo@earth.li>**20080412153543]
1783[(F)SLIT -> (f)sLit in StgLint
1784Ian Lynagh <igloo@earth.li>**20080412153440]
1785[(F)SLIT -> (f)sLit in Parser
1786Ian Lynagh <igloo@earth.li>**20080412153329]
1787[(F)SLIT -> (f)sLit in RdrHsSyn
1788Ian Lynagh <igloo@earth.li>**20080412153052]
1789[(F)SLIT -> (f)sLit in SysTools
1790Ian Lynagh <igloo@earth.li>**20080412152909]
1791[(F)SLIT -> (f)sLit in MachCodeGen
1792Ian Lynagh <igloo@earth.li>**20080412152750]
1793[(F)SLIT -> (f)sLit in PositionIndependentCode
1794Ian Lynagh <igloo@earth.li>**20080412152545]
1795[(F)SLIT -> (f)sLit in RegallocLinear
1796Ian Lynagh <igloo@earth.li>**20080412152355]
1797[(F)SLIT -> (f)sLit in RegLiveness
1798Ian Lynagh <igloo@earth.li>**20080412152307]
1799[(F)SLIT -> (f)sLit in PprMach
1800Ian Lynagh <igloo@earth.li>**20080412152217]
1801[(F)SLIT -> (f)sLit in Desugar
1802Ian Lynagh <igloo@earth.li>**20080412151250]
1803[(F)SLIT -> (f)sLit in MkIface
1804Ian Lynagh <igloo@earth.li>**20080412151147]
1805[(F)SLIT -> (f)sLit in DsForeign
1806Ian Lynagh <igloo@earth.li>**20080412150848]
1807[(F)SLIT -> (f)sLit in Match
1808Ian Lynagh <igloo@earth.li>**20080412150644]
1809[(F)SLIT -> (f)sLit in DsBinds
1810Ian Lynagh <igloo@earth.li>**20080412150510]
1811[(F)SLIT -> (f)sLit in Coverage
1812Ian Lynagh <igloo@earth.li>**20080412150416]
1813[(F)SLIT -> (f)sLit in DsUtils
1814Ian Lynagh <igloo@earth.li>**20080412150317]
1815[(F)SLIT -> (f)sLit in DsUtils
1816Ian Lynagh <igloo@earth.li>**20080412150231]
1817[(F)SLIT -> (f)sLit in TcHsSyn
1818Ian Lynagh <igloo@earth.li>**20080412145639]
1819[(F)SLIT -> (f)sLit in FunDeps
1820Ian Lynagh <igloo@earth.li>**20080412145238]
1821[(F)SLIT -> (f)sLit in DsMonad
1822Ian Lynagh <igloo@earth.li>**20080412145201]
1823[(F)SLIT -> (f)sLit in TcIface
1824Ian Lynagh <igloo@earth.li>**20080412145105]
1825[(F)SLIT -> (f)sLit in LoadIface
1826Ian Lynagh <igloo@earth.li>**20080412145018]
1827[(F)SLIT -> (f)sLit in Finder
1828Ian Lynagh <igloo@earth.li>**20080412144812]
1829[(F)SLIT -> (f)sLit in TcRnMonad
1830Ian Lynagh <igloo@earth.li>**20080412144557]
1831[(F)SLIT -> (f)sLit in TcRnTypes
1832Ian Lynagh <igloo@earth.li>**20080412144504]
1833[(F)SLIT -> (f)sLit in WwLib
1834Ian Lynagh <igloo@earth.li>**20080412144123]
1835[(F)SLIT -> (f)sLit in CoreSubst
1836Ian Lynagh <igloo@earth.li>**20080412143851]
1837[(F)SLIT -> (f)sLit in CorePrep
1838Ian Lynagh <igloo@earth.li>**20080412143637]
1839[(F)SLIT -> (f)sLit in CgCon
1840Ian Lynagh <igloo@earth.li>**20080412143540]
1841[(F)SLIT -> (f)sLit in HscTypes
1842Ian Lynagh <igloo@earth.li>**20080412143353]
1843[(F)SLIT -> (f)sLit in FamInstEnv
1844Ian Lynagh <igloo@earth.li>**20080412141122]
1845[(F)SLIT -> (f)sLit in InstEnv
1846Ian Lynagh <igloo@earth.li>**20080412141045]
1847[(F)SLIT -> (f)sLit in CgPrimOp
1848Ian Lynagh <igloo@earth.li>**20080412140741]
1849[(F)SLIT -> (f)sLit in PprC
1850Ian Lynagh <igloo@earth.li>**20080412140630]
1851[(F)SLIT -> (f)sLit in CgForeignCall
1852Ian Lynagh <igloo@earth.li>**20080412140213]
1853[(F)SLIT -> (f)sLit in CgClosure
1854Ian Lynagh <igloo@earth.li>**20080412140136]
1855[(F)SLIT -> (f)sLit in PprCmmZ
1856Ian Lynagh <igloo@earth.li>**20080412135934]
1857[(F)SLIT -> (f)sLit in ZipCfgCmmRep
1858Ian Lynagh <igloo@earth.li>**20080412135902]
1859[(F)SLIT -> (f)sLit in CmmLint
1860Ian Lynagh <igloo@earth.li>**20080412135820]
1861[(F)SLIT -> (f)sLit in CmmCPSGen
1862Ian Lynagh <igloo@earth.li>**20080412135728]
1863[(F)SLIT -> (f)sLit in CgBindery
1864Ian Lynagh <igloo@earth.li>**20080412135620]
1865[(F)SLIT -> (f)sLit in CgHeapery
1866Ian Lynagh <igloo@earth.li>**20080412135529]
1867[(F)SLIT -> (f)sLit in CgTicky
1868Ian Lynagh <igloo@earth.li>**20080412135411]
1869[(F)SLIT -> (f)sLit in CgCallConv
1870Ian Lynagh <igloo@earth.li>**20080412135037]
1871[(F)SLIT -> (f)sLit in CgProf
1872Ian Lynagh <igloo@earth.li>**20080412133935]
1873[(F)SLIT -> (f)sLit in PprCmm
1874Ian Lynagh <igloo@earth.li>**20080412133323]
1875[(F)SLIT -> (f)sLit in ClosureInfo
1876Ian Lynagh <igloo@earth.li>**20080412133030]
1877[(F)SLIT -> (f)sLit in StSyn
1878Ian Lynagh <igloo@earth.li>**20080412132924]
1879[(F)SLIT -> (f)sLit in SMRep
1880Ian Lynagh <igloo@earth.li>**20080412132534]
1881[(F)SLIT -> (f)sLit in MachOp
1882Ian Lynagh <igloo@earth.li>**20080412132430]
1883[(F)SLIT -> (f)sLit in CLabel
1884Ian Lynagh <igloo@earth.li>**20080412132305]
1885[(F)SLIT -> (f)sLit in Packages
1886Ian Lynagh <igloo@earth.li>**20080412132158]
1887[(F)SLIT -> (f)sLit in Lexer
1888Ian Lynagh <igloo@earth.li>**20080412132044]
1889[(F)SLIT -> (f)sLit in MkId
1890Ian Lynagh <igloo@earth.li>**20080412131831]
1891[(F)SLIT -> (f)sLit in Rules
1892Ian Lynagh <igloo@earth.li>**20080412131707]
1893[(F)SLIT -> (f)sLit in PrelRules
1894Ian Lynagh <igloo@earth.li>**20080412131612]
1895[(F)SLIT -> (f)sLit in HsSyn
1896Ian Lynagh <igloo@earth.li>**20080412130737]
1897[(F)SLIT -> (f)sLit in HsUtils
1898Ian Lynagh <igloo@earth.li>**20080412125320]
1899[(F)SLIT -> (f)sLit in HsExpr
1900Ian Lynagh <igloo@earth.li>**20080412125229]
1901[(F)SLIT -> (f)sLit in HsDecls
1902Ian Lynagh <igloo@earth.li>**20080412124928]
1903[(F)SLIT -> (f)sLit in HsImpExp
1904Ian Lynagh <igloo@earth.li>**20080412124840]
1905[(F)SLIT -> (f)sLit in HsPat
1906Ian Lynagh <igloo@earth.li>**20080412124758]
1907[(F)SLIT -> (f)sLit in HsTypes
1908Ian Lynagh <igloo@earth.li>**20080412124645]
1909[(F)SLIT -> (f)sLit in IfaceSyn
1910Ian Lynagh <igloo@earth.li>**20080412124607]
1911[(F)SLIT -> (f)sLit in IfaceType
1912Ian Lynagh <igloo@earth.li>**20080412124507]
1913[(F)SLIT -> (f)sLit in CoreUnfold
1914Ian Lynagh <igloo@earth.li>**20080412124420]
1915[(F)SLIT -> (f)sLit in CoreLint
1916Ian Lynagh <igloo@earth.li>**20080412124339]
1917[(F)SLIT -> (f)sLit in CoreUtils
1918Ian Lynagh <igloo@earth.li>**20080412124218]
1919[(F)SLIT -> (f)sLit in PprCore
1920Ian Lynagh <igloo@earth.li>**20080412124141]
1921[(F)SLIT -> (f)sLit in Id
1922Ian Lynagh <igloo@earth.li>**20080412123952]
1923[(F)SLIT -> (f)sLit in TcType
1924Ian Lynagh <igloo@earth.li>**20080412123745]
1925[(F)SLIT -> (f)sLit in IdInfo
1926Ian Lynagh <igloo@earth.li>**20080412123637]
1927[(F)SLIT -> (f)sLit in CoreSyn
1928Ian Lynagh <igloo@earth.li>**20080412123507]
1929[(F)SLIT -> (f)sLit in CostCentre
1930Ian Lynagh <igloo@earth.li>**20080412123402]
1931[(F)SLIT -> (f)sLit in Literal
1932Ian Lynagh <igloo@earth.li>**20080412123322]
1933[Generate fsLit not FSLIT in genprimopcode
1934Ian Lynagh <igloo@earth.li>**20080412123247]
1935[(F)SLIT -> (f)sLit in TysWiredIn
1936Ian Lynagh <igloo@earth.li>**20080412122946]
1937[(F)SLIT -> (f)sLit in TysPrim
1938Ian Lynagh <igloo@earth.li>**20080412122846]
1939[(F)SLIT -> (f)sLit in ForeignCall
1940Ian Lynagh <igloo@earth.li>**20080412122757]
1941[(F)SLIT -> (f)sLit in DataCon
1942Ian Lynagh <igloo@earth.li>**20080412122709]
1943[(F)SLIT -> (f)sLit in Coercion
1944Ian Lynagh <igloo@earth.li>**20080412122627]
1945[(F)SLIT -> (f)sLit in Type
1946Ian Lynagh <igloo@earth.li>**20080412122524]
1947[(F)SLIT -> (f)sLit in TypeRep
1948Ian Lynagh <igloo@earth.li>**20080412122409]
1949[(F)SLIT -> (f)sLit in VarEnv
1950Ian Lynagh <igloo@earth.li>**20080412121437]
1951[(F)SLIT -> (f)sLit in Class
1952Ian Lynagh <igloo@earth.li>**20080412121245]
1953[(F)SLIT -> (f)sLit in Class
1954Ian Lynagh <igloo@earth.li>**20080412121211]
1955[(F)SLIT -> (f)sLit in Var
1956Ian Lynagh <igloo@earth.li>**20080412121140]
1957[(F)SLIT -> (f)sLit in Name
1958Ian Lynagh <igloo@earth.li>**20080412121050]
1959[(F)SLIT -> (f)sLit in OccName
1960Ian Lynagh <igloo@earth.li>**20080412121008]
1961[(F)SLIT -> (f)sLit in SrcLoc
1962Ian Lynagh <igloo@earth.li>**20080412120909]
1963[(F)SLIT -> (f)sLit in Module
1964Ian Lynagh <igloo@earth.li>**20080412120817]
1965[(F)SLIT -> (f)sLit in BasicTypes
1966Ian Lynagh <igloo@earth.li>**20080412120745]
1967[(F)SLIT -> (f)sLit in Outputable
1968Ian Lynagh <igloo@earth.li>**20080412120538]
1969[SLIT -> sLit in Prety.lhs
1970Ian Lynagh <igloo@earth.li>**20080412120004]
1971[Don't use CPP for SLIT/FSLIT
1972Ian Lynagh <igloo@earth.li>**20080412115745]
1973[Simplify SimplCont, plus some other small changes to the Simplifier
1976 The main change in this patch is this:
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.
1983   * Similarly StrictArg no longer needs an OutType
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.
1989   * Lots of other small knock-on effects
1991 Other changes in here
1993   * simplLazyBind does do the type-abstraction thing if there's
1994     a lambda inside.  See comments in simplLazyBind
1996   * simplLazyBind reduces simplifier iterations by keeping
1997     unfolding information for stuff for which type abstraction is
1998     done (see add_poly_bind)
2000 All of this came up when implementing System IF, but seems worth applying
2001 to the HEAD
2004[Comments only in SimplCore
2006[Comments only
2008[Minor bug in SpecConstr
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:
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
2022[Comments only
2024[Fix a long-standing bug in FloatOut
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).
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.
2038[Remove static flag opt_RuntimeTypes (has not been used in years)
2040[Refactor the TyVarTy case of 'match'.  No change in behaviour.
2042[Add Note [Generating the in-scope set for a substitution]
2044[Rename WpCo to WpCast
2046[Fix #2044 (:printing impredicatively typed things)
2047pepe <mnislaih@gmail.com>**20080421171322
2049 Switching to boxyUnify should be enough to fix this.
2051[Improve External Core syntax for newtypes
2052Tim Chevalier <chevalier@alum.wellesley.edu>**20080422045244
2054 I was confused by the newtype eta-contraction trick before.
2055 Newtype declarations are much less redundant now.
2057[Update External Core docs
2058Tim Chevalier <chevalier@alum.wellesley.edu>**20080422044342
2060 Update documentation to reflect GHC HEAD.
2062[External Core typechecker - improve handling of coercions
2063Tim Chevalier <chevalier@alum.wellesley.edu>**20080422015622
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.)
2071[Naming changes in External Core
2072Tim Chevalier <chevalier@alum.wellesley.edu>**20080422012734
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.)
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.)
2086[Add clarifying comments about unsafeCoerce
2088[Make the integer library to use more configurable
2089Ian Lynagh <igloo@earth.li>**20080420195856
2090 Now you just set INTEGER_LIBRARY=integer-foo in build.mk
2092[Remove some duplicate extern decls
2093Ian Lynagh <igloo@earth.li>**20080416162330]
2094[Add some more generic (en|de)code(Double|Float) code
2095Ian Lynagh <igloo@earth.li>**20080417171943]
2096[Updates to handle Ordering moving from base to ghc-prim
2097Ian Lynagh <igloo@earth.li>**20080412100657]
2098[Fix lndir
2099Ian Lynagh <igloo@earth.li>**20080408193436
2100 It would copy when it should symlink, and vice-versa.
2102[Improve External Core syntax
2103Tim Chevalier <chevalier@alum.wellesley.edu>**20080416000347
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.)
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.)
2113[FIX BUILD (Windows): Copy the ln trick used by the GMP build
2114Simon Marlow <simonmar@microsoft.com>**20080414173225]
2115[Revive the static argument transformation
2118 This patch revives the Static Argument Transformation, thanks to
2119 Max Bolingbroke.  It is enabled with
2120        -fstatic-argument-transformation
2121 or     -O2
2123 Headline nofib results
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%
2132[Transfer strictness and arity info when abstracting over type variables
2135 See Note [transferPolyIdInfo] in Id.lhs, and test
2136        eyeball/demand-on-polymorphic-floatouts.hs
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.
2143[Revive External Core typechecker
2144Tim Chevalier <chevalier@alum.wellesley.edu>**20080414024648
2146 The typechecker works again! Yay!
2148 Details upon request.
2150[Eta-expand newtype coercions in External Core
2151Tim Chevalier <chevalier@alum.wellesley.edu>**20080414031654
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
2157[Extra info in genprimopcode --make-ext-core-source
2158Tim Chevalier <chevalier@alum.wellesley.edu>**20080414025407
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.
2165[Fixing HPCTIXDIR problem with mkdir usage on Windows
2167[Update .darcs-boring with utils/ext-core stuff
2168Tim Chevalier <chevalier@alum.wellesley.edu>**20080411185734]
2169[FIX #2197: an update frame might point to an IND_OLDGEN
2170Simon Marlow <simonmar@microsoft.com>**20080411173404]
2171[Rejig error reporting in the unifier slightly
2173[Improve error message layout slightly
2175[Two improvements to boxy matching
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)
2184[Fix Trac #2206: ensure the return type is rigid in a GADT match
2188[Fix Trac #2205, which I introduced recently
2190[Ensure that arity is accurate in back end
2193 See Note [exprArity invariant] in CoreUtils.  In code generated by Happy
2194 I was seeing this after TidyPgm and CorePrep
2196        f :: Any
2197        f {arity 1} = id `cast` unsafe-co
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). 
2202 This triggered a slightly-obscure ASSERT failure in CoreToStg
2204 This patch
2205        - makes exprArity trim the arity if the type is not a function
2206        - adds a stronger ASSERT in TidyPgm
2208 It's not the only way to solve this problem (see Note [exprArity invariant])
2209 but it's enough for now.
2212[Make the arity and strictness agree, for wired-in bottoming Ids
2214[Fix bug in vectorisation of case expressions
2215Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080411045307]
2216[Extend genprimopcode to print primop types for ext-core
2217Tim Chevalier <chevalier@alum.wellesley.edu>**20080410185810
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.
2224[add pointers to the wiki for the rules about C prototypes
2225Simon Marlow <simonmar@microsoft.com>**20080409204143]
2226[avoid warnings from ffi.h when UseLibFFIForAdjustors=YES
2227Simon Marlow <simonmar@microsoft.com>**20080409204048]
2228[FIX BUILD (bootstrap with -fvia-C): prototype fixes
2229Simon Marlow <simonmar@microsoft.com>**20080409203724
2232[Another round of External Core fixes
2233Tim Chevalier <chevalier@alum.wellesley.edu>**20080410043727
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:
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
2245 Documentation and external tool patches will follow.
2248[Adding environment variable HPCTIXDIR, a directory to place tix results.
2250[Fixing hpc combine and hpc map to use the correct help message
2252[Import libffi-3.0.4, and use it to provide FFI support in GHCi
2253Simon Marlow <simonmar@microsoft.com>**20080408183434
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).
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.
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).
2273[FIX BUILD on non-x86: add missing prototypes
2274Simon Marlow <simonmar@microsoft.com>**20080407213748]
2275[update a comment
2276Simon Marlow <simonmar@microsoft.com>**20080407212437]
2277[remove dead code
2278Simon Marlow <simonmar@microsoft.com>**20080403223422]
2279[Replace one occurance of CVS with darcs in HACKING
2280Samuel Bronson <naesten@gmail.com>**20080407222006]
2281[Remove GADT refinements, part 5
2282Manuel 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.
2287[Remove GADT refinements, part 4
2288Manuel 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.
2293[Improve error message for malformed LANGUAGE pragma
2294Tim Chevalier <chevalier@alum.wellesley.edu>**20080406202333
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.
2300[Improve error message for non-matching file name
2301Tim Chevalier <chevalier@alum.wellesley.edu>**20080406193821
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.)
2307[Virtualize the cwd in GHCi
2308Pepe Iborra <mnislaih@gmail.com>**20080405145136
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
2315[Fix rendering of references in :print under -fprint-evld-with-show flag
2316Pepe Iborra <mnislaih@gmail.com>**20071219174431]
2317[Fix Trac #2188: scoping in TH declarations quotes
2320 This patch fixes a rather tiresome issue, namely the fact that
2321 a TH declaration quote *shadows* bindings in outer scopes:
2323   f g = [d| f :: Int
2324             f = g
2325            g :: Int
2326             g = 4 |]
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.)
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.
2337[Fix simplifier thrashing
2340 Another example of the simplifier thrashing, getting nowhere.
2341 See SimplUtils, Note [Unsaturated functions]
2343 There's a test at eyeball/inline4.hs
2346[Fix Trac #2179: error message for main
2349 A short-cut to generate the (runMainIO main) wrapper turned out
2350 to make a bad error message.  This should fix it.
2353[Fix Trac #2136: reporting of unused variables
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.
2363[Fix Trac #2137: report correct location for shadowed binding
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.
2371[Fix Trac #2141: invalid record update
2374 See Note [Record field lookup] in TcEnv.  The fix here
2375 is quite straightforward.
2378[Do not #include external header files when compiling via C
2379Simon Marlow <simonmar@microsoft.com>**20080402051412
2381 This has several advantages:
2383  - -fvia-C is consistent with -fasm with respect to FFI declarations:
2384    both bind to the ABI, not the API.
2386  - foreign calls can now be inlined freely across module boundaries, since
2387    a header file is not required when compiling the call.
2389  - bootstrapping via C will be more reliable, because this difference
2390    in behavour between the two backends has been removed.
2392 There is one disadvantage:
2394  - we get no checking by the C compiler that the FFI declaration
2395    is correct.
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.
2402[Derive a valid Ix instance for data Foo = Foo Int Int
2403Ian Lynagh <igloo@earth.li>**20080330182813
2404 The old one didn't satisfy the axioms. See trac #2158 for details.
2406[Revive External Core parser
2407Tim Chevalier <chevalier@alum.wellesley.edu>**20080329223948
2409 Huzzah, the External Core parser will now parse External Core generated by
2410 the HEAD.
2412 Most notably, I rewrote the parser in Parsec, but the old Happy version
2413 remains in the repository.
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.
2421 The checker and interpreter still don't work, but should compile.
2423 Please mess around with the parser, report bugs, improve my code, etc.,
2424 if you're so inclined.
2427[Fix big character literal printing in External Core
2428Tim Chevalier <chevalier@alum.wellesley.edu>**20080329221109
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...)
2434[External Core: don't print superfluous parens in case types
2435Tim Chevalier <chevalier@alum.wellesley.edu>**20080329194629
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.
2439[Don't import FastString in HsVersions.h
2440Ian Lynagh <igloo@earth.li>**20080329185043
2441 Modules that need it import it themselves instead.
2443[DEBUG removal
2444Ian Lynagh <igloo@earth.li>**20080329171135]
2445[DEBUG removal
2446Ian Lynagh <igloo@earth.li>**20080329171013]
2447[DEBUG removal
2448Ian Lynagh <igloo@earth.li>**20080329170935]
2449[DEBUG removal
2450Ian Lynagh <igloo@earth.li>**20080329170341]
2451[DEBUG removal
2452Ian Lynagh <igloo@earth.li>**20080329170227]
2453[DEBUG removal
2454Ian Lynagh <igloo@earth.li>**20080329165412]
2455[Fix typo; spotted by Bdh in #ghc
2456Ian Lynagh <igloo@earth.li>**20080329165303]
2457[DEBUG removal
2458Ian Lynagh <igloo@earth.li>**20080329164849]
2459[DEBUG removal
2460Ian Lynagh <igloo@earth.li>**20080329164420]
2461[Remove a DEBUG use
2462Ian Lynagh <igloo@earth.li>**20080329164209]
2463[Remove a DEBUG
2464Ian Lynagh <igloo@earth.li>**20080329163936]
2465[Remove more #ifdef DEBUGs
2466Ian Lynagh <igloo@earth.li>**20080329145716]
2467[Remove an #ifdef DEBUG
2468Ian Lynagh <igloo@earth.li>**20080329145508]
2469[Remove an #ifdef DEBUG
2470Ian Lynagh <igloo@earth.li>**20080329145244]
2471[Remove an #ifdef DEBUG
2472Ian Lynagh <igloo@earth.li>**20080329144844]
2473[Remove a #ifdef DEBUG
2474Ian Lynagh <igloo@earth.li>**20080329144658]
2475[Remove an #ifdef DEBUG
2476Ian Lynagh <igloo@earth.li>**20080329144544]
2477[Remove some redundant code
2478Ian Lynagh <igloo@earth.li>**20080329144226]
2479[prelude/PrimOp is now mostly warning-free
2480Ian Lynagh <igloo@earth.li>**20080329143914
2481 commutableOp seems to be unused, so we're no 100% there yet.
2483[Fix warnings from primops.txt.pp
2484Ian Lynagh <igloo@earth.li>**20080329142637]
2485[Use _ rather than "other" in generated code
2486Ian Lynagh <igloo@earth.li>**20080329142508]
2487[Fix some warnings
2488Ian Lynagh <igloo@earth.li>**20080329142219]
2489[Remove some redundant imports
2490Ian Lynagh <igloo@earth.li>**20080329141809]
2491[Remove an #ifdef DEBUG
2492Ian Lynagh <igloo@earth.li>**20080329141733]
2493[Remove an #ifdef DEBUG
2494Ian Lynagh <igloo@earth.li>**20080329141629]
2495[Remove some unnecessary imports
2496Ian Lynagh <igloo@earth.li>**20080329141145]
2497[Remove an unnecessary #ifdef DEBUG
2498Ian Lynagh <igloo@earth.li>**20080329141047]
2499[Another debugIsOn use
2500Ian Lynagh <igloo@earth.li>**20080329140126]
2501[Convert some DEBUG uses to debugIsOn
2502Ian Lynagh <igloo@earth.li>**20080329135950]
2503[Put debugIsOn in Util, rather than rely on it being CPPed in
2504Ian Lynagh <igloo@earth.li>**20080329135755]
2505[External Core: print function types correctly, improve newtype pretty-printing
2506Tim Chevalier <chevalier@alum.wellesley.edu>**20080328222630
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...)
2513 - Make newtype decls print slightly more readably.
2515[Print out rational literals correctly in External Core
2516Tim Chevalier <chevalier@alum.wellesley.edu>**20080328211919
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...)
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.)
2527[Change syntax for qualified names in External Core
2528Tim Chevalier <chevalier@alum.wellesley.edu>**20080327185436
2530 Two changes that make the ext-core code uglier but the parser easier:
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
2538 - z-encode package names ("ghc-prim" was the culprit.)
2540[Make use of the SDoc type synonym
2541Ian Lynagh <igloo@earth.li>**20080326175306]
2542[Fix warnings in rename/RnTypes
2543Ian Lynagh <igloo@earth.li>**20080326174657]
2544[Fix warnings in basicTypes/IdInfo
2545Ian Lynagh <igloo@earth.li>**20080326170014]
2546[Fix warnings in basicTypes/NameEnv
2547Ian Lynagh <igloo@earth.li>**20080326165139]
2548[Fix warnings in basicTypes/NameSet
2549Ian Lynagh <igloo@earth.li>**20080326164837]
2550[Fix warning in basicTypes/NewDemand
2551Ian Lynagh <igloo@earth.li>**20080326160017]
2552[Fix warnings in basicTypes/VarEnv
2553Ian Lynagh <igloo@earth.li>**20080326155412]
2554[Fix warnings in basicTypes/VarSet
2555Ian Lynagh <igloo@earth.li>**20080326155105]
2556[main/BreakArray has no warnings
2557Ian Lynagh <igloo@earth.li>**20080326154747]
2558[In validate settings, make -Werror easier to override
2559Ian Lynagh <igloo@earth.li>**20080326141030]
2560[Remove a redundant type sig
2561Ian Lynagh <igloo@earth.li>**20080326004932]
2562[Fix warnings in main/DriverPhases
2563Ian Lynagh <igloo@earth.li>**20080325235828]
2564[Remove redundant type sig
2565Ian Lynagh <igloo@earth.li>**20080325235801]
2566[Fix warnings in main/HscStats
2567Ian Lynagh <igloo@earth.li>**20080325234110]
2568[Fix warnings in main/Constants
2569Ian Lynagh <igloo@earth.li>**20080325233034]
2570[Fix warnings in main/InteractiveEval
2571Ian Lynagh <igloo@earth.li>**20080325230153]
2572[Fix warnings in main/Packages
2573Ian Lynagh <igloo@earth.li>**20080325224444]
2574[Fix warnings in main/PprTyThing
2575Ian Lynagh <igloo@earth.li>**20080325223104]
2576[Fix warnings in main/StaticFlags
2577Ian Lynagh <igloo@earth.li>**20080325221632]
2578[Change syntax for newtypes in External Core
2579Tim Chevalier <chevalier@alum.wellesley.edu>**20080325170218
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.
2585 For example, the Haskell source:
2587 newtype T a = MkT (a -> a)
2589 foo (MkT x) = x
2591 got printed out in External Core as (roughly):
2593   %newtype T a = a -> a;
2595   foo :: %forall t . T t -> t -> t =
2596     %cast (\ @ t -> a1 @ t)
2597     (%forall t . T t -> ZCCoT t);
2599 There is no declaration anywhere in the External Core program for :CoT, so
2600 that's bad.
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:
2605   %newtype T a ^ (ZCCoT :: ((T a) :=: (a -> a))) = a -> a;
2607 And an external typechecker could conceivably typecheck code that uses this.
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.
2613 Documentation and external tool changes to follow.
2616[Fix warnings in the RTS
2617Ian Lynagh <igloo@earth.li>**20080325160314
2618 For some reason this causes build failures for me in my 32-bit chroot,
2620[Another change for GHC.PrimopWrappers moving from base to ghc-prim
2621Ian Lynagh <igloo@earth.li>**20080324224006]
2622[Update darcs-boring
2623Ian Lynagh <igloo@earth.li>**20080324212319]
2624[Fix primMname in External Core printer
2625Tim Chevalier <chevalier@alum.wellesley.edu>**20080324014311
2627  My earlier changes broke printing of function types in .hcr files.
2628   In other words: the z-encoding must die.
2630[Fix primMname in External Core printer
2631Tim Chevalier <chevalier@alum.wellesley.edu>**20080324005246
2633 My earlier changes broke printing of function types in .hcr files.
2634 In other words: the z-encoding must die.
2636[Follow library changes
2637Ian Lynagh <igloo@earth.li>**20080323182557
2638 Integer, Bool and Unit/Inl/Inr are now in new packages integer
2639 and ghc-prim.
2641[CgTicky now doesn't know about the Integer data constructors
2642Ian Lynagh <igloo@earth.li>**20080320195836]
2643[-DDEBUG build fix
2644Ian Lynagh <igloo@earth.li>**20080322140641]
2645[Rename rebuild to remake, and define rebuild to "clean; build"
2646Ian Lynagh <igloo@earth.li>**20080320221915]
2647[Handle hierarchical module names in External Core tools
2648Tim Chevalier <chevalier@alum.wellesley.edu>**20080320014449
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.
2653 Beware kludgy use of z-encoding and gratutious copy-pasta from GHC.
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.
2663[Improve hierarchical module name handling in MkExternalCore
2664Tim Chevalier <chevalier@alum.wellesley.edu>**20080319190429
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.)
2673 So now we z-encode the hierarchical module-name part of a module
2674 name, but don't z-encode the ':'.
2676 I also removed some old comments that don't seem relevant anymore.
2678[Fixed remaining warning in coreSyn/MkExternalCore
2679Tim Chevalier <chevalier@alum.wellesley.edu>**20080319182521
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.
2683[Revert an accidental change
2684Ian Lynagh <igloo@earth.li>**20080317200130]
2685[Print some extra debugging info when doing --show-iface
2686Ian Lynagh <igloo@earth.li>**20080317185032]
2687[Eliminate a global variable
2688Ian Lynagh <igloo@earth.li>**20080317180150
2689 Very little parameter passing is needed without it, so there was no real
2690 benefit to it.
2692[Follow changes in editline
2693Ian Lynagh <igloo@earth.li>**20080317103617]
2694[Use editline instead of readline
2695Ian Lynagh <igloo@earth.li>**20080316060407]
2696[Vectorise tuple constructorsn
2697Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080317033436]
2698[Added double divide and unzipP
2700[Added 'div' to set of vectorising functions
2702[If unregisterised, link with -optl-Wl,--relax on IA64
2703Ian Lynagh <igloo@earth.li>**20080316214104
2704 This fixes part of trac #856
2706[When concatenating variables in Makefile, strip spaces in case one is empty
2707Ian Lynagh <igloo@earth.li>**20080315141751
2708 Otherwise "$(A) $(B)" will not be equal to "" even if A and B are empty.
2709 Trac #856.
2711[Fix a space leak in :trace (trac #2128)
2712Ian 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.
2716[If we are failing due to a warning and -Werror, say so
2717Ian Lynagh <igloo@earth.li>**20080316195636
2718 Fixes trac #1893, based on a patch from Daniel Franke.
2720[Remove leftover NoteTy/FTVNote bits
2721Ian Lynagh <igloo@earth.li>**20080315194220]
2722[Remove uses of addFreeTyVars
2723Ian 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.
2728[parsing tweak for :break
2729Simon Marlow <simonmar@microsoft.com>**20080313182936]
2730[Tweaks to stack squeezing
2731Simon Marlow <simonmar@microsoft.com>**20080207122445
2733 1. We weren't squeezing two frames if one of them was a marked update
2734    frame.  This is easy to fix.
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.
2740[Some cleanup in TcSimplify.reduceContext
2741Manuel 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
2745[Properly normalise reduced dicts
2746Manuel 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).
2756 Thanks to Roman for the intricate example that uncovered this bug.
2758[Bump mAX_NDP_PROD to 5
2759Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080313061411]
2760[#2050: save the GHCi history in ~/.ghc/ghci_history
2761Simon Marlow <simonmar@microsoft.com>**20080312215724
2762 Modified version of Judah's patch
2764[Make sure we generate PA dictionaries for tuples up to mAX_NDP_PROD
2765Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080312034905]
2766[Bump mAX_NDP_PROD to 4
2767Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080312030245]
2768[First cut at reviving the External Core tools
2769Tim Chevalier <chevalier@alum.wellesley.edu>**20080310025821
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?)
2773 Major changes:
2775 - Added a Makefile.
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.)
2784 - Updated parser/interpreter/typechecker/prep for the new AST.
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.
2790 - Prep:
2791     - Got rid of typeofExp; it's now defined in terms of the typechecker.
2794[Remove ndpFlatten
2795Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080309225914
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.
2800[documentation fix: change flag -frules-off to -fno-rewrite-rules
2802[Don't expose the unfolding of dictionary selectors without -O
2805 When compiling without -O we were getting code like this
2807        f x = case GHC.Base.$f20 of
2808                  :DEq eq neq -> eq x x
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
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.
2819 There should be no effect when compiling with -O.  Programs should
2820 be smaller without -O and may run a tiny bit slower.
2824[Fix Trac #783: improve short-cutting literals in the type checker
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.
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.
2836[Fix Trac #2138: print the 'stupid theta' of a data type
2838[Fix vectorisation monad
2839Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080307050859]
2840[Improve SpecConstr for local bindings: seed specialisation from the calls
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:
2847   * For local (not-top-level) declarations, seed the specialisation
2848     loop from the calls in the body of the 'let'.
2850 See Note [Local recursive groups] for discussion and example.  Top-level
2851 declarations are treated just as before.
2853 Other changes in this patch:
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.
2858   * Refactoring in specLoop and friends; new algebraic data types
2859     OneSpec and SpecInfo instead of the tuples that were there before
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.
2869[Refactor OccAnal; and improve dead-code elimination
2872 The occurrence analyer is now really rather subtle when dealing
2873 with recursive groups; see Note [Loop breaking and RULES] especially.
2875 This patch refactors this code a bit, notably
2876   * Introduces a new data type Details instead of a tuple
2878   * More clearly breaks up a recursive group into its SCCs
2879        before processing it in a separate function occAnalRec
2881   * As a result, does better dead-code elimination, becuause it's
2882        done per SCC rather than for the whole Rec
2888[Copy the right ghc-pkg.bin into bindists
2889Ian Lynagh <igloo@earth.li>**20080305224020]
2890[Add a missing endif to the bindist Makefile
2891Ian Lynagh <igloo@earth.li>**20080305221136]
2892[Fix bashisms; patch from Bernie Pope
2893Ian Lynagh <igloo@earth.li>**20080305134556]
2894[Improve no-type-signature warning
2895Ian 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
2903[Fix typo
2904Ian Lynagh <igloo@earth.li>**20080302151339]
2905[In bindists, look in the right place to see if we have provided docs
2906Ian Lynagh <igloo@earth.li>**20080302140408
2907 Fixes trac #1971: unjustified warning about documentation
2909[Remove GADT refinements, part 3
2910Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080229035740]
2911[MacOS installer: Uninstaller must be able to deal with ATiger receipts
2912Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080228050707]
2913[Add and use seqBitmap when constructing SRTs
2914Ian Lynagh <igloo@earth.li>**20080227144505
2915 This roughly halves memory usage when compiling
2916     module Foo where
2918     foo :: Double -> Int
2919     foo x | x == 1 = 1
2920     ...
2921     foo x | x == 500 = 500
2922 without optimisation.
2925Ian Lynagh <igloo@earth.li>**20080220191230]
2926[Remove GADT refinements, part 2
2927Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080228055326]
2928[Fix Trac #2130: improve derived Ord for primmitive types
2931 This patch does two things:
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.
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.
2942 However see also Trac #2132, which is not addressed here.
2945[Comments only
2947[add a note about SMP execution not being supported with profiling
2948Simon Marlow <simonmar@microsoft.com>**20080228112209]
2949[Enable -prof -threaded (#886)
2950Simon 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.
2957[Wibble to error message (stmt of do block or comprehension)
2959[Make explicit lists more fusable
2960Max Bolingbroke <batterseapower@hotmail.com>**20080228083050]
2961[Add comments explaining flags
2963[Remove GADT refinements, part 1
2964Manuel 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.
2970   Hurray to code simplification!
2972[Eliminate SkolemOccurs skolems only after checkLoop reached a fixed point
2973Manuel 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
2977[Fix Trac #2126: re-order tests (easy)
2979[Fix Trac #2111: improve error handling for 'rec' in do-notation
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.
2988 I think this patch sorts it out.
2991[Remove gaw comment
2993[Fix Trac #1899; missing equality check in typechecker's constraint simplifier
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
3004[FIX #2122: file locking bug
3005Simon 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.
3010[documentation improvements from Frederik Eaton
3011Simon Marlow <simonmar@microsoft.com>**20080226102612]
3012[markup fix
3013Simon Marlow <simonmar@microsoft.com>**20080226102558]
3014[Mac installer: cross-compile for 10.4
3015Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080225093734]
3016[Make UniqFM non-strict again while we work out what we're doing.
3017Ian Lynagh <igloo@earth.li>**20080225171305
3018 This "fixes" the very-slow problem we have when compiling dictionaries.
3020[Fix Trac #2082
3022[Fix Trac #2114: error reporting for 'forall' without appropriate flags
3024[Improve error messages from type-checking data constructors
3027 This addresses Trac #2112
3030[Add type sigs and minor refactoring
3032[FIX #2073: Don't add empty lines to GHCI's history
3033Ian Lynagh <igloo@earth.li>**20080224143256]
3034[FIX #1977: Check to see if $(bindir) is in the path
3035Ian 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.
3039[Fix warnings in Simplify
3040Ian Lynagh <igloo@earth.li>**20080222150318]
3042Ian Lynagh <igloo@earth.li>**20080222140755]
3043[Add a comment
3044Ian Lynagh <igloo@earth.li>**20080220205844]
3045[Fix most of the warnings in StgLint
3046Ian Lynagh <igloo@earth.li>**20080220171858]
3048Ian Lynagh <igloo@earth.li>**20080220171140]
3049[CprAnalyse is warning-free
3050Ian Lynagh <igloo@earth.li>**20080220170843]
3052Ian Lynagh <igloo@earth.li>**20080220170650]
3053[Fix #1984: missing context switches
3054Simon Marlow <simonmar@microsoft.com>**20080219102212]
3055[fix unregisterised stage 2 build
3056Simon Marlow <simonmar@microsoft.com>**20080219093407]
3057[Mac OS X deployment target: piping opts through Makefiles
3058Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080221224449]
3059[Rewrite fixTvSubstEnv so it iteratively applies its substition
3060Ian 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.
3066Ian Lynagh <igloo@earth.li>**20080219204117]
3067[Make some more modules use LazyUniqFM instead of UniqFM
3068Ian 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.
3072[Add configure option --with-macos-deployment-target
3073Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080219031755]
3074[Fix warning in SCCfinal
3075Ian Lynagh <igloo@earth.li>**20080219020429]
3076[Whitespace only
3077Ian Lynagh <igloo@earth.li>**20080219015259]
3078[Fix warnings in UniqSupply
3079Ian Lynagh <igloo@earth.li>**20080219013233]
3080[Whitespace only
3081Ian Lynagh <igloo@earth.li>**20080219012417]
3082[Fix non-missing-signature warnings in MkId
3083Ian Lynagh <igloo@earth.li>**20080219010917]
3084[Whitespace only
3085Ian Lynagh <igloo@earth.li>**20080219005042]
3086[Whitespace only
3087Ian Lynagh <igloo@earth.li>**20080218234559]
3088[Make literals in the syntax tree strict
3089Ian Lynagh <igloo@earth.li>**20080218183424]
3090[Make the parser a bit stricter
3091Ian Lynagh <igloo@earth.li>**20080218175514]
3092[seq what we actually want to seq, not the seq'ing function
3093Ian Lynagh <igloo@earth.li>**20080213131857]
3094[attempt to fix #2098 (PPC pepple please test & fix)
3095Simon Marlow <simonmar@microsoft.com>**20080218115748]
3096[FIX #2023: substitute for $topdir in haddockInterfaces and haddockHTMLs
3097Simon Marlow <simonmar@microsoft.com>**20080209143648]
3098[All installed Haskell prgms have an inplace and an installed version
3099Manuel 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.
3121[Fix warnings in Pretty
3122Ian Lynagh <igloo@earth.li>**20080218214151]
3123[Fix warnings in FiniteMap
3124Ian Lynagh <igloo@earth.li>**20080218200408]
3125[Fix warnings in Binary
3126Ian Lynagh <igloo@earth.li>**20080218193645]
3127[Fix warnings in StringBuffer
3128Ian Lynagh <igloo@earth.li>**20080218191846]
3129[Fix warnings in IOEnv
3130Ian Lynagh <igloo@earth.li>**20080218190849]
3131[Fix warnings in FastString, and check for empty case in head/tail
3132Ian Lynagh <igloo@earth.li>**20080218144707]
3133[Whitespace only
3134Ian Lynagh <igloo@earth.li>**20080218112232]
3135[Whitespace only
3136Ian Lynagh <igloo@earth.li>**20080218112101]
3137[Whitespace only
3138Ian Lynagh <igloo@earth.li>**20080218111941]
3139[Whitespace only
3140Ian Lynagh <igloo@earth.li>**20080218110241]
3141[Whitespace only
3142Ian Lynagh <igloo@earth.li>**20080218105909]
3143[Whitespace only
3144Ian Lynagh <igloo@earth.li>**20080218105343]
3145[Tweak whitespace
3146Ian Lynagh <igloo@earth.li>**20080217175133]
3147[Fix typo
3148Ian Lynagh <igloo@earth.li>**20080217175021]
3149[Print better error message for reading External Core
3150Tim Chevalier <chevalier@alum.wellesley.edu>**20080217223844
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.
3156 Please merge to 6.8. Thanks.
3159[Documentation only: update External Core section of user guide
3160Tim Chevalier <chevalier@alum.wellesley.edu>**20080217213206
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.
3165[Generate foo(void) rather than foo() in FFI stub files
3166Ian Lynagh <igloo@earth.li>**20080216141031
3167 -Wstrict-prototypes warns about the latter.
3168 Patch from pcc in trac #2100.
3170[Make hasktags -Wall clean
3171Ian Lynagh <igloo@earth.li>**20080215160309]
3172[Whitespace only
3173Ian Lynagh <igloo@earth.li>**20080215155122]
3174[Fix building hasktags
3175Ian Lynagh <igloo@earth.li>**20080215154415]
3176[Revert an accidental comment change
3177Ian Lynagh <igloo@earth.li>**20080215153558]
3178[find module names, fix for get constructor names, find class names as well, sort ctag files
3180[added TODO item and link to alternatives on wiki
3182[Make more arch-specific #if's exclusive with #else #error cases
3183Duncan 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.
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.
3195[Document code a bit better
3196Ian Lynagh <igloo@earth.li>**20080213161106]
3197[Add a necessary [] error case
3198Ian Lynagh <igloo@earth.li>**20080213154232]
3199[\e -> f e   ===>    f
3200Ian Lynagh <igloo@earth.li>**20080213153835]
3201[Fixed warnings in parser/Lexer.x
3202Twan van Laarhoven <twanvl@gmail.com>**20080204021131
3204 The -w flag can not be removed, because alex also generates code with lots of warnings.
3206[Monadification and Fixed warnings in parser/RdrHsSyn, except for incomplete pattern matches
3207Twan van Laarhoven <twanvl@gmail.com>**20080204015053]
3208[Fixed warnings in vectorise/VectMonad
3209Twan van Laarhoven <twanvl@gmail.com>**20080203223932]
3210[Fix typo in message
3211Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080212052219]
3212[Remove old code to get TMPDIR, use System.Directory.getTemporaryDirectory
3213Simon Marlow <simonmar@microsoft.com>**20080207143915]
3214[Mac installer: Added XCODE_EXTRA_CONFIGURE_ARGS
3215Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211115201]
3216[Mac installer: make Uninstaller a bit more robust
3217Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211091119]
3218[Mac installer: add comprehensive licencing information
3219Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211061450]
3220[Force -s on ar in xcode builds
3221Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080211022329]
3222[Fix warning (FIX validate)
3223Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080211040211]
3224[Symbolic tags for simplifier phases
3225Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080211032350
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.
3234 At the moment, the supported tags are:
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
3241 The names are somewhat arbitrary and will change in the future.
3243[Allow -ddump-simpl-phases to specify which phases to dump
3244Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080211020630
3246 We can now say -ddump-simpl-phases=1,2 to dump only these two phases and
3247 nothing else.
3249[Fixed warnings in parser/ParserCoreUtils
3250Twan van Laarhoven <twanvl@gmail.com>**20080204022226]
3251[Fixed warnings in hsSyn/Convert, except for incomplete pattern matches
3252Twan van Laarhoven <twanvl@gmail.com>**20080204000510]
3253[Fixed warnings in types/Unify
3254Twan van Laarhoven <twanvl@gmail.com>**20080203224228]
3255[Fixed warnings in ndpFlatten/FlattenInfo
3256Twan van Laarhoven <twanvl@gmail.com>**20080203224159]
3257[Fixed warnings in vectorise/VectBuiltIn
3258Twan van Laarhoven <twanvl@gmail.com>**20080203224043]
3259[Fixed warnings in vectorise/VectCore
3260Twan van Laarhoven <twanvl@gmail.com>**20080203224003]
3261[Fixed warnings in deSugar/DsExpr, except for incomplete pattern matches
3262Twan van Laarhoven <twanvl@gmail.com>**20080203214848]
3263[Fixed warnings in deSugar/DsGRHSs, except for incomplete pattern matches
3264Twan van Laarhoven <twanvl@gmail.com>**20080203214602]
3265[Fixed warnings in deSugar/DsListComp, except for incomplete pattern matches
3266Twan van Laarhoven <twanvl@gmail.com>**20080203211253]
3267[Fixed warnings in deSugar/Check, except for incomplete pattern matches
3268Twan van Laarhoven <twanvl@gmail.com>**20080203210814]
3269[Fixed warnings in deSugar/Match, except for incomplete pattern matches
3270Twan van Laarhoven <twanvl@gmail.com>**20080203210533]
3271[Fixed warnings in deSugar/MatchCon, except for incomplete pattern matches
3272Twan van Laarhoven <twanvl@gmail.com>**20080203210402]
3273[Fixed warnings in deSugar/DsMonad
3274Twan van Laarhoven <twanvl@gmail.com>**20080203210339]
3275[Wibble the Makefile: DQ, \" and '"'
3276Ian Lynagh <igloo@earth.li>**20080210171104]
3277[Don't use -w when compiling Config.hs
3278Ian Lynagh <igloo@earth.li>**20080210171050]
3279[Add typesigs to Config.hs
3280Ian Lynagh <igloo@earth.li>**20080210170925]
3281[Allow skipping "make clean" or only re-running the testsuite in validate
3282Ian Lynagh <igloo@earth.li>**20080210162842]
3283[Mac installer: added support for full docs
3284Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080209110727]
3285[Fixed permissions and other cleanup in Mac installer package
3286Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080207030528]
3287[Adjust error message (Trac #2079)
3289[Redo inlining patch, plus some tidying up
3292 This adds back in the patch
3293   * UNDO: Be a little keener to inline
3295 It originally broke the compiler because it tickled a Cmm optimisation bug,
3296 now fixed. 
3298 In revisiting this I have also make inlining a bit cleverer, in response to
3299 more examples from Roman. In particular
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
3309   * There was conseqential tidying up on the data type of CallCont.
3310     In particular I got rid of the now-unused LetRhsFlag
3315[Comments, and a type signature
3317[FIX #2080: an optimisation to remove a widening was wrong
3318Simon Marlow <simonmar@microsoft.com>**20080208124219]
3319[Remove some of the old compat stuff now that we assume GHC 6.4
3320Simon Marlow <simonmar@microsoft.com>**20080208124132]
3321[Allow runghc to take input from stdin, just like Ruby & Python
3322Simon Marlow <simonmar@microsoft.com>**20080207145830]
3323[remove a bogus assertion
3324Simon Marlow <simonmar@microsoft.com>**20080207143805]
3325[Convert more UniqFM's back to LazyUniqFM's
3326Ian 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
3340[Be a bit more consistent about what's a set and what's a map
3341Ian Lynagh <igloo@earth.li>**20080205211909]
3342[Make some more modules use LazyUniqFM instead of UniqFM
3343Ian 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.
3347[Remove unused import
3348Ian Lynagh <igloo@earth.li>**20080207002544]
3349[Make UniqFM strict in its elements
3350Ian Lynagh <igloo@earth.li>**20080206141620]
3351[Use uniqSetToList rather than eltsUFM
3352Ian Lynagh <igloo@earth.li>**20080206000043]
3353[Use isEmptyUniqSet rather than isNullUFM
3354Ian Lynagh <igloo@earth.li>**20080205205336]
3355[Added Uninstaller
3356Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080206073054]
3357[FIX BUILD on x86_64
3358Simon Marlow <simonmar@microsoft.com>**20080206113936]
3359[matchesPkg: match against the pkg Id (foo-1.0) not just the package name (foo)
3360Simon Marlow <simonmar@microsoft.com>**20080205090429
3361 Fixes the ghcpkg01 test.
3363[Teach cheapEqExpr about casts
3364Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080206035007
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.
3371[Inject implicit bindings before the simplifier (Trac #2070)
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:
3378   data Foo = Foo { get :: {-# UNPACK #-} !Int }
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 }
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.
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.
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.
3409[Make do-notation a bit more flexible (Trac #1537)
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).
3417 We can probably merge to 6.8.3 if it goes smoothly.
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.
3425[White space only
3427[FIX #2047: Windows (and older Unixes): align info tables to 4 bytes, not 2
3428Simon 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.
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.
3438[Most of installer for framework on system volume
3439Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080205073738]
3440[Split into two types of Mac installer specs
3441Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080205052504]
3442[Lambda logo for packages
3443Manuel 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
3447[xcode build target for fixed /Library/Frameworks inst
3448Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080205030047
3449 - Also moving all MacOS-specific Makefile components into
3450   distrib/MacOS/Makefile
3452[First stab at an installer package for the Mac
3453Manuel 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).
3461[Support for using libffi to implement FFI calls in GHCi (#631)
3462Simon 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.
3466 Also in this commit:
3468  - use PrimRep rather than CgRep to describe FFI args in the byte
3469    code generator.  No functional changes, but PrimRep is more correct.
3471  - change TyCon.sizeofPrimRep to primRepSizeW, which is more useful
3473[Use the correct libffi type for pointers
3474Simon Marlow <simonmar@microsoft.com>**20080104131936]
3475[Fix DEBUG build
3477[Make seqAlts actually seq everything
3478Ian Lynagh <igloo@earth.li>**20080203134321]
3479[Strictness tweaks
3480Ian Lynagh <igloo@earth.li>**20080203024836]
3482Ian Lynagh <igloo@earth.li>**20080203003929]
3483[Whitespace only
3484Ian Lynagh <igloo@earth.li>**20080202213936]
3485[Tweak strictness
3486Ian Lynagh <igloo@earth.li>**20080202213542]
3487[Fix warnings in deSugar/DsBinds
3488Ian Lynagh <igloo@earth.li>**20080130144014]
3489[UNDO: Be a little keener to inline
3490Simon Marlow <simonmar@microsoft.com>**20080201144810
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. 
3498 A little more validation please!
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.
3505[FIX BUILD with GHC 6.4.x
3506Simon Marlow <simonmar@microsoft.com>**20080201122753]
3507[FIX BUILD with ghc-6.4.x
3508Simon Marlow <simonmar@microsoft.com>**20080201114302]
3509[Some tweaks to the building from source section
3510Simon Marlow <simonmar@microsoft.com>**20080129091132]
3511[Warning clean up
3512Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080131024845]
3513[Move spiltDmdTy within module (no change in code)
3515[Fix typo where I forgot the new substitution
3517[Add missing (error) case in isIrrefutablePat
3519[Add missing (error) case in pprConDecl
3521[Fix warnings on non-Windows
3522Ian Lynagh <igloo@earth.li>**20080130114640]
3523[Fixed warnings in main/ErrUtils
3524Twan van Laarhoven <twanvl@gmail.com>**20080127015419]
3525[Fixed warnings in main/HeaderInfo, except for incomplete pattern matches
3526Twan van Laarhoven <twanvl@gmail.com>**20080127014118]
3527[Fixed warnings in main/DynFlags
3528Twan van Laarhoven <twanvl@gmail.com>**20080127012443]
3529[Fixed warnings in hsSyn/HsSyn
3530Twan van Laarhoven <twanvl@gmail.com>**20080127004626]
3531[Fixed warnings in hsSyn/HsUtils
3532Twan van Laarhoven <twanvl@gmail.com>**20080127004506]
3533[Fixed warnings in hsSyn/HsTypes
3534Twan van Laarhoven <twanvl@gmail.com>**20080127004419]
3535[Fixed warnings in hsSyn/HsDoc
3536Twan van Laarhoven <twanvl@gmail.com>**20080127004359]
3537[Fixed warnings in hsSyn/HsLit
3538Twan van Laarhoven <twanvl@gmail.com>**20080127004330]
3539[Fixed warnings in hsSyn/HsImpExp, except for incomplete pattern matches
3540Twan van Laarhoven <twanvl@gmail.com>**20080127004254]
3541[Fixed warnings in hsSyn/HsPat, except for incomplete pattern matches
3542Twan van Laarhoven <twanvl@gmail.com>**20080127004209]
3543[Fixed warnings in hsSyn/HsBinds, except for incomplete pattern matches
3544Twan van Laarhoven <twanvl@gmail.com>**20080127004119]
3545[Fixed warnings in hsSyn/HsDecls, except for incomplete pattern matches
3546Twan van Laarhoven <twanvl@gmail.com>**20080127004046]
3547[Fixed warnings in simplCore/CSE
3548Twan van Laarhoven <twanvl@gmail.com>**20080126233918]
3549[Fixed warnings in profiling/CostCentre, except for incomplete pattern matches
3550Twan van Laarhoven <twanvl@gmail.com>**20080126232841]
3551[Fixed warnings in types/InstEnv
3552Twan van Laarhoven <twanvl@gmail.com>**20080126231732]
3553[Fixed warnings in types/FamInstEnv
3554Twan van Laarhoven <twanvl@gmail.com>**20080126231426]
3555[Fixed warnings in simplStg/SRT, except for incomplete pattern matches
3556Twan van Laarhoven <twanvl@gmail.com>**20080126230900]
3557[Fixed warnings in simplStg/StgStats, except for incomplete pattern matches
3558Twan van Laarhoven <twanvl@gmail.com>**20080126230830]
3559[Fixed warnings in simplStg/SimplStg
3560Twan van Laarhoven <twanvl@gmail.com>**20080126230805]
3561[Fixed warnings in vectorise/VectUtils
3562Twan van Laarhoven <twanvl@gmail.com>**20080126223033]
3563[Fixed warnings in types/Generics
3564Twan van Laarhoven <twanvl@gmail.com>**20080126222817]
3565[Fixed warnings in stgSyn/StgSyn
3566Twan van Laarhoven <twanvl@gmail.com>**20080126221010]
3567[Fixed warnings in types/TyCon
3568Twan van Laarhoven <twanvl@gmail.com>**20080126215800]
3569[Fixed warnings in types/Type, except for incomplete pattern matches
3570Twan van Laarhoven <twanvl@gmail.com>**20080126214126]
3571[Fixed warnings in types/TypeRep
3572Twan van Laarhoven <twanvl@gmail.com>**20080126211722]
3573[Fixed warnings in types/FunDeps
3574Twan van Laarhoven <twanvl@gmail.com>**20080126203050]
3575[Fixed warnings in basicTypes/OccName
3576Twan van Laarhoven <twanvl@gmail.com>**20080126202737]
3577[Fixed warnings in basicTypes/RdrName
3578Twan van Laarhoven <twanvl@gmail.com>**20080126202104]
3579[Fixed warnings in utils/Encoding
3580Twan van Laarhoven <twanvl@gmail.com>**20080126201235]
3581[Fixed warnings in utils/Digraph
3582Twan van Laarhoven <twanvl@gmail.com>**20080126200754]
3583[Fixed warnings in basicTypes/Demand
3584Twan van Laarhoven <twanvl@gmail.com>**20080126195929]
3585[Fixed warnings in basicTypes/Unique
3586Twan van Laarhoven <twanvl@gmail.com>**20080126195459]
3587[Fixed warnings in coreSyn/ExternalCore
3588Twan van Laarhoven <twanvl@gmail.com>**20080126194759]
3589[Fixed warnings in simplCore/OccurAnal
3590Twan van Laarhoven <twanvl@gmail.com>**20080126194426]
3591[Fixed warnings in basicTypes/BasicTypes
3592Twan van Laarhoven <twanvl@gmail.com>**20080126194255]
3593[Fixed warnings in basicTypes/Literal, except for incomplete pattern matches
3594Twan van Laarhoven <twanvl@gmail.com>**20080126193209]
3595[Fixed warnings in basicTypes/Id
3596Twan van Laarhoven <twanvl@gmail.com>**20080126192817]
3597[Fixed warnings in basicTypes/Var
3598Twan van Laarhoven <twanvl@gmail.com>**20080126191939]
3599[Fixed warnings in basicTypes/Name
3600Twan van Laarhoven <twanvl@gmail.com>**20080126191501]
3601[Fixed warnings in types/Coercion, except for incomplete pattern matches
3602Twan van Laarhoven <twanvl@gmail.com>**20080126190735]
3603[Fixed warnings in coreSyn/MkExternalCore, except for incomplete pattern matches
3604Twan van Laarhoven <twanvl@gmail.com>**20080126012807]
3605[Fixed warnings in coreSyn/PprExternalCore
3606Twan van Laarhoven <twanvl@gmail.com>**20080125162418]
3607[Fixed warnings in coreSyn/CoreUtils, except for incomplete pattern matches
3608Twan van Laarhoven <twanvl@gmail.com>**20080125161800]
3609[Fixed warnings in coreSyn/CoreUnfold
3610Twan van Laarhoven <twanvl@gmail.com>**20080125161308]
3611[Fixed warnings in coreSyn/CorePrep
3612Twan van Laarhoven <twanvl@gmail.com>**20080125161051]
3613[Fixed warnings in coreSyn/CoreSubst
3614Twan van Laarhoven <twanvl@gmail.com>**20080125161002]
3615[Fixed warnings in coreSyn/CoreLint
3616Twan van Laarhoven <twanvl@gmail.com>**20080125160809]
3617[Fixed warnings in coreSyn/CoreFVs, except for incomplete pattern matches
3618Twan van Laarhoven <twanvl@gmail.com>**20080125160716]
3619[Fixed warnings in types/Class
3620Twan van Laarhoven <twanvl@gmail.com>**20080125160438]
3621[Fix warnings in coreSyn/CoreTidy
3622Twan van Laarhoven <twanvl@gmail.com>**20080118165559]
3623[Fix warnings in coreSyn/CoreSyn
3624Twan van Laarhoven <twanvl@gmail.com>**20080118165506]
3625[Strictness tweaks
3626Ian Lynagh <igloo@earth.li>**20080125174347]
3627[Parser tweak
3628Ian Lynagh <igloo@earth.li>**20080125145847]
3629[A couple more parser tweaks
3630Ian Lynagh <igloo@earth.li>**20080125143421]
3631[Make comb[234] strict
3632Ian Lynagh <igloo@earth.li>**20080124183149]
3633[Strictness tweaks
3634Ian Lynagh <igloo@earth.li>**20080124183142]
3635[Tell happy to be strict
3636Ian Lynagh <igloo@earth.li>**20080124165214]
3637[Make the Parser Monad's return strict
3638Ian Lynagh <igloo@earth.li>**20080124155827]
3639[Get a bit of sharing
3640Ian Lynagh <igloo@earth.li>**20080124152000]
3641[Make sL strict in /both/ arguments to L
3642Ian Lynagh <igloo@earth.li>**20080124151223]
3643[A touch more strictness in the parser
3644Ian Lynagh <igloo@earth.li>**20080124150137]
3645[Add a bit of strictness to the parser
3646Ian Lynagh <igloo@earth.li>**20080124145311]
3647[Use nilFS
3648Ian Lynagh <igloo@earth.li>**20080123211917]
3649[Whitespace only
3650Ian Lynagh <igloo@earth.li>**20080123174153]
3651[Fix #2062: foldr1 problem in hpc tool
3653[Fix do-notation so that it works with -DDEBUG
3655[Be a little keener to inline
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.
3664[Fix the build
3665Ian Lynagh <igloo@earth.li>**20080124141800
3666 Work around various problems caused by some of the monadification patches
3667 not being applied.
3669[Replace ioToTcRn with liftIO
3670Twan van Laarhoven <twanvl@gmail.com>**20080117220553]
3671[Remove unused custom versions of monad combinators from IOEnv
3672Twan van Laarhoven <twanvl@gmail.com>**20080117215835]
3673[Remove unused custom versions of monad combinators from UniqSupply
3674Twan van Laarhoven <twanvl@gmail.com>**20080117215752]
3675[Replace remaining uses of ioToIOEnv by liftIO, remove ioToIOEnv
3676Twan van Laarhoven <twanvl@gmail.com>**20080117215233]
3677[Monadify iface/BuildTyCl: use return
3678Twan van Laarhoven <twanvl@gmail.com>**20080117215036]
3679[Monadify iface/TcIface: use do, return, applicative, standard monad functions
3680Twan van Laarhoven <twanvl@gmail.com>**20080117214938]
3681[Monadify iface/MkIface: use do, return and standard monad functions
3682Twan van Laarhoven <twanvl@gmail.com>**20080117214441]
3683[Monadify iface/LoadIface: use return and liftIO
3684Twan van Laarhoven <twanvl@gmail.com>**20080117214233]
3685[Monadify iface/IfaceEnv: use do, return and standard monad functions
3686Twan van Laarhoven <twanvl@gmail.com>**20080117214041]
3687[Monadify typecheck/TcRnMonad: use return, standard monad functions and liftIO
3688Twan van Laarhoven <twanvl@gmail.com>**20080117213850]
3689[Monadify typecheck/TcEnv: use do, return, applicative, standard monad functions
3690Twan van Laarhoven <twanvl@gmail.com>**20080117213636]
3691[Monadify typecheck/TcRnDriver: use return and standard monad functions
3692Twan van Laarhoven <twanvl@gmail.com>**20080117213352]
3693[Monadify typecheck/TcMatches: use return and standard monad functions
3694Twan van Laarhoven <twanvl@gmail.com>**20080117213307]
3695[Monadify typecheck/TcMType: use do, return, applicative, standard monad functions
3696Twan van Laarhoven <twanvl@gmail.com>**20080117213242]
3697[Monadify typecheck/TcInstDcls: use do, return and standard monad functions
3698Twan van Laarhoven <twanvl@gmail.com>**20080117213040]
3699[Monadify typecheck/TcHsType: use do, return and standard monad functions
3700Twan van Laarhoven <twanvl@gmail.com>**20080117212822]
3701[Monadify typecheck/TcSimplify: use do, return and standard monad functions
3702Twan van Laarhoven <twanvl@gmail.com>**20080117212200]
3703[Monadify typecheck/TcSplice: use do and return
3704Twan van Laarhoven <twanvl@gmail.com>**20080117211911]
3705[Monadify typecheck/TcTyClsDecls: use return and standard monad functions
3706Twan van Laarhoven <twanvl@gmail.com>**20080117211746]
3707[Monadify typecheck/TcDefaults: use return and standard monad functions
3708Twan van Laarhoven <twanvl@gmail.com>**20080117211558]
3709[Monadify typecheck/TcDeriv: use return
3710Twan van Laarhoven <twanvl@gmail.com>**20080117211507]
3711[Monadify typecheck/TcClassDcl: use do, return and standard monad functions
3712Twan van Laarhoven <twanvl@gmail.com>**20080117211439]
3713[Monadify typecheck/TcBinds: use do, return and standard monad functions
3714Twan van Laarhoven <twanvl@gmail.com>**20080117211035]
3715[Monadify typecheck/TcArrows: use do and return
3716Twan van Laarhoven <twanvl@gmail.com>**20080117210818]
3717[Monadify typecheck/Inst: use do, return and standard monad functions
3718Twan van Laarhoven <twanvl@gmail.com>**20080117210655]
3719[Monadify typecheck/TcUnify: use do, return and standard monad functions
3720Twan van Laarhoven <twanvl@gmail.com>**20080117210213
3721   there may be some accidental tab->space conversion
3723[Monadify typecheck/TcTyFuns: use standard monad functions
3724Twan van Laarhoven <twanvl@gmail.com>**20080117205505]
3725[Monadify typecheck/TcPat: use return and standard monad functions
3726Twan van Laarhoven <twanvl@gmail.com>**20080117205423]
3727[Monadify typecheck/TcRules: use do, return and standard monad functions
3728Twan van Laarhoven <twanvl@gmail.com>**20080117205307]
3729[Monadify typecheck/TcForeign: use do, return and standard monad functions
3730Twan van Laarhoven <twanvl@gmail.com>**20080117204934]
3731[Monadify typecheck/TcExpr: use do, return and standard monad functions
3732Twan van Laarhoven <twanvl@gmail.com>**20080117204603]
3733[Monadify specialise/Specialise: use do, return, standard monad functions and MonadUnique
3734Twan van Laarhoven <twanvl@gmail.com>**20080117204330]
3735[Monadify specialise/SpecConstr: use do, return and standard monad functions
3736Twan van Laarhoven <twanvl@gmail.com>**20080117203842]
3737[Monadify stgSyn/StgLint
3738Twan 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
3745[Monadify stgSyn/CoreToStg
3746Twan 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
3751[Remove generic monad function from State, it was moved to MonadUtils
3752Twan van Laarhoven <twanvl@gmail.com>**20080117202144]
3753[Added MaybeT monad transformer to utils/Maybes
3754Twan van Laarhoven <twanvl@gmail.com>**20080117202051]
3755[Removed unused Maybe functions, use the standard Maybe monad instead
3756Twan van Laarhoven <twanvl@gmail.com>**20080117201953]
3757[MonadIO instance for IOEnv
3758Twan van Laarhoven <twanvl@gmail.com>**20080117201812]
3759[Monadify simplCore/SimplMonad: custom monad functions are no longer needed
3760Twan van Laarhoven <twanvl@gmail.com>**20080117200354]
3761[Monadify simplCore/SimplMonad: use MonadUnique instance instead of custom functions
3762Twan van Laarhoven <twanvl@gmail.com>**20080117200228]
3763[Monadify simplCore/SetLevels: use do, return, standard monad functions and MonadUnique
3764Twan van Laarhoven <twanvl@gmail.com>**20080117195958]
3765[Monadify simplCore/SimplUtils: use do, return, standard monad functions and MonadUnique
3766Twan van Laarhoven <twanvl@gmail.com>**20080117195625]
3767[Monadify simplCore/Simplify: use do and return
3768Twan van Laarhoven <twanvl@gmail.com>**20080117195408]
3769[Monadify simplCore/SimplEnv: use standard monad functions
3770Twan van Laarhoven <twanvl@gmail.com>**20080117195255]
3771[Monadify simplCore/SimplCore: use do, return and standard monad functions
3772Twan van Laarhoven <twanvl@gmail.com>**20080117195149]
3773[Monadify profiling/SCCfinal
3774Twan van Laarhoven <twanvl@gmail.com>**20080117194417
3775   - change monad type synonym into a newtype
3776   - use do, return and standard monad functions
3778[Monadify coreSyn/CorePrep: use do, return, applicative, standard monad functions
3779Twan van Laarhoven <twanvl@gmail.com>**20080117193154]
3780[Monadify rename/RnTypes: use do, return and standard monad functions
3781Twan van Laarhoven <twanvl@gmail.com>**20080117190823]
3782[Monadify rename/RnPat: use do, return and standard monad functions
3783Twan van Laarhoven <twanvl@gmail.com>**20080117190033]
3784[Monadify rename/RnNames: use return and standard monad functions
3785Twan van Laarhoven <twanvl@gmail.com>**20080117185837]
3786[seqMaybe is more commonly known as mplus
3787Twan van Laarhoven <twanvl@gmail.com>**20080117185330]
3788[Monadify rename/RnBinds: use do, return and standard monad functions
3789Twan van Laarhoven <twanvl@gmail.com>**20080117184354]
3790[Monadify stranal/StrictAnal: use the State monad instead of a custom thing
3791Twan van Laarhoven <twanvl@gmail.com>**20080117180449]
3792[Monadify stranal/WwLib: use do, return, applicative, standard monad functions
3793Twan van Laarhoven <twanvl@gmail.com>**20080117180022]
3794[Added MonadUnique class for monads that have a unique supply
3795Twan van Laarhoven <twanvl@gmail.com>**20080117175616]
3796[Monadify stranal/WorkWrap: use do, return, applicative, standard monad functions
3797Twan van Laarhoven <twanvl@gmail.com>**20080117175007]
3798[Added Applicative and Functor instances for State monad
3799Twan van Laarhoven <twanvl@gmail.com>**20080117174656]
3800[Monadify deSugar/DsMonad: use do, return, applicative, standard monad functions
3801Twan van Laarhoven <twanvl@gmail.com>**20080117174432]
3802[Monadify deSugar/Desugar: use do, return, applicative, standard monad functions
3803Twan van Laarhoven <twanvl@gmail.com>**20080117174130]
3804[Monadify deSugar/DsUtils: use do, return, applicative, standard monad functions
3805Twan van Laarhoven <twanvl@gmail.com>**20080117173856]
3806[Monadify deSugar/DsListComp: use do, return, applicative, standard monad functions
3807Twan van Laarhoven <twanvl@gmail.com>**20080117173205]
3808[Monadify deSugar/DsForeign: use do, return, applicative, standard monad functions
3809Twan van Laarhoven <twanvl@gmail.com>**20080117172843]
3810[Monadify deSugar/DsGRHSs: use do, return, applicative, standard monad functions
3811Twan van Laarhoven <twanvl@gmail.com>**20080117172228]
3812[Monadify deSugar/DsExpr: use do, return, applicative, standard monad functions
3813Twan van Laarhoven <twanvl@gmail.com>**20080117164055]
3814[Added Applicative instance for IOEnv
3815Twan van Laarhoven <twanvl@gmail.com>**20080117162644]
3816[Add 'util/MonadUtils.hs' with common monad (and applicative) combinators
3817Twan van Laarhoven <twanvl@gmail.com>**20080117161939]
3818[Monadify deSugar/MatchLit: use do, return, applicative, standard monad functions
3819Twan van Laarhoven <twanvl@gmail.com>**20080117173439]
3820[Monadify deSugar/Match: use do, return, applicative, standard monad functions
3821Twan van Laarhoven <twanvl@gmail.com>**20080117173336]
3822[Monadify deSugar/DsCCall: use do, return, applicative, standard monad functions
3823Twan van Laarhoven <twanvl@gmail.com>**20080117165334]
3824[Monadify deSugar/DsArrows: use do, return, applicative, standard monad functions
3825Twan van Laarhoven <twanvl@gmail.com>**20080117165114]
3826[Monadify deSugar/DsBinds: use do, return, applicative, standard monad functions
3827Twan van Laarhoven <twanvl@gmail.com>**20080117164746]
3828[Added MASSERT macro for assertions in do notation
3829Twan van Laarhoven <twanvl@gmail.com>**20080117163112]
3830[FIX BUILD wrong imports on non-Windows
3831Simon Marlow <simonmar@microsoft.com>**20080124092935]
3832[Show CmdLineError exceptions as "<command line>: ..."
3833Simon 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.
3839[FIX #1750: in isBrokenPackage, don't loop if the deps are recursive
3840Simon Marlow <simonmar@microsoft.com>**20080123160703]
3841[FIX #1750: throw out mutually recursive groups of packages
3842Simon Marlow <simonmar@microsoft.com>**20080123160635]
3843[Windows now doesn't need different values for DQ in the build system
3844Ian Lynagh <igloo@earth.li>**20080123173933]
3845[Fix setting argv[0] in shell-utils.c on Windows
3846Ian Lynagh <igloo@earth.li>**20080123160139]
3847[Escape arguments for Windows in shell-tools.c
3848Ian Lynagh <igloo@earth.li>**20080123151724]
3849[Attach the INLINE Activation pragma to any automatically-generated specialisations
3852 Another idea suggested by Roman, happily involving a one-line change.  Here's
3853 the new Note in Specialise:
3855 Note [Auto-specialisation and RULES]
3856 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3857 Consider:
3858    g :: Num a => a -> a
3859    g = ...
3861    f :: (Int -> Int) -> Int
3862    f w = ...
3863    {-# RULE f g = 0 #-}
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.
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
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.
3882[Tidy up the treatment of SPECIALISE pragmas
3885 Remove the now-redundant "const-dicts" field in SpecPrag
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.
3891 There should be no effect on performance either way, just less
3892 duplicated code, and the compiler gets a little simpler.
3895[Comments only
3897[FIX #1838, #1987: change where GHCi searches for config files
3898Simon Marlow <simonmar@microsoft.com>**20080123143207
3900 6.6 behaviour:
3901   - ./.ghci
3902   - $HOME/.ghci
3904 6.8.[12] behaviour:
3905   - ./.ghci
3906   - Windows: c:/Documents and Settings/<user>/.ghci
3907   - Unix: $HOME/.ghci
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
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].
3918[FIX #1767 :show documentation claimed too much
3919Simon Marlow <simonmar@microsoft.com>**20080122152943
3920 Also put the :help docs back within 80 columns
3922[fix syntax-error output for :show
3923Simon Marlow <simonmar@microsoft.com>**20080122144923]
3924[This goes with the patch for #1839, #1463
3925Simon Marlow <simonmar@microsoft.com>**20080122161811]
3926[use pathSeparator instead of '/'
3927Simon Marlow <simonmar@microsoft.com>**20080122140957]
3928[cleanup only
3929Simon Marlow <simonmar@microsoft.com>**20080122132047]
3930[FIX #1839, #1463, by supporting ghc-pkg bulk queries with substring matching
3933    - #1839 asks for a ghc-pkg dump feature, #1463 for the ability
3934      to query the same fields in several packages at once.
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.
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)
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.
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.
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.
3968      examples (the quotes are needed to escape shell-based
3969      filename globbing and should be omitted in cmd.exe):
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 '*'
3982[Wibble to the OccurAnal fix for RULEs and loop-breakers
3984[FIX #2049, another problem with the module context on :reload
3985Simon 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). 
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.
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...
3998[Increase the bar for bootstrapping GHC to 6.4 (HEAD only)
3999Simon 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.
4005[Do not worker/wrapper INLINE things, even if they are in a recursive group
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.
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
4017 Simon
4020[Make the loop-breaking algorithm a bit more liberal, where RULES are involved
4023 This is another gloss on the now-quite-subtle and heavily-documented algorithm
4024 for choosing loop breakers.
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*.
4030 Most of the new lines are comments!
4033[Fix Trac #2055
4036 Sorry, this was my fault, a consequence of the quasi-quoting patch. 
4038 I've added rn062 as a test.
4042[Fix exception message with ghc -e
4043Ian 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.
4047[Fix warnings in main/CmdLineParser
4048Ian Lynagh <igloo@earth.li>**20080121103158]
4049[Normalise FilePaths before printing them
4050Ian Lynagh <igloo@earth.li>**20080120193002]
4051[Tweak runghc
4052Ian Lynagh <igloo@earth.li>**20080120184639]
4053[Fix catching exit exceptions in ghc -e
4054Ian Lynagh <igloo@earth.li>**20080120170236]
4055[Typo in phase-control documentation
4057[Fix warnings in main/Main
4058Ian Lynagh <igloo@earth.li>**20080119235914]
4059[Support multiple -e flags
4060Ian Lynagh <igloo@earth.li>**20080119223036]
4061[Fix ghc -e :main (it was enqueuing the main function, but not running it)
4062Ian Lynagh <igloo@earth.li>**20080119220044]
4063[Fix whitespace
4064Ian Lynagh <igloo@earth.li>**20080119212830]
4065[Fix giving an error if we are given conflicting mode flags
4066Ian Lynagh <igloo@earth.li>**20080119212602]
4067[Add :run and tweak :main
4068Ian 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.
4074[Make MacFrameworks a subdirectory of distrib, since it isn't used in the normal building process.
4076[Add scripts for building GMP.framework and GNUreadline.framework (OS X).
4078[Use -framework-path flags during the cc phase.  Fixes trac #1975.
4080[FIX #1821 (Parser or lexer mess-up)
4082[Improve the error when :list can't find any code to show
4083Ian Lynagh <igloo@earth.li>**20080118225655]
4084[Fix imports when !DEBUG
4085Ian Lynagh <igloo@earth.li>**20080118180126]
4086[Tweak the splitter
4087Ian 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".
4092[Wibble to SetLevels.abstractVars
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.
4101[Add quasi-quotation, courtesy of Geoffrey Mainland
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.
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.
4117 The "quoter" is a value of type Language.Haskell.TH.Quote.QuasiQuoter, which
4118 contains two functions for quoting expressions and patterns, respectively.
4120      quote = Language.Haskell.TH.Quote.QuasiQuoter quoteExp quotePat
4122      quoteExp :: String -> Language.Haskell.TH.ExpQ
4123      quotePat :: String -> Language.Haskell.TH.PatQ
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.
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.
4140 Points to notice
4141 ~~~~~~~~~~~~~~~~
4142 * The whole thing is enabled with the flag -XQuasiQuotes
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 }
4157       type CharPos = (Int, Int)        -- Line and character position
4159   So you get a lot more info from 'location' than from 'currentModule'.
4160   The location you get is the location of the splice.
4162   This works in Template Haskell too of course, and lets a TH program
4163   generate much better error messages.
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.
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.
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.)
4181[lots of portability changes (#1405)
4182Isaac Dupree <id@isaac.cedarswampstudios.org>**20080117011312
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:
4188 Fri Dec 28 11:02:55 EST 2007  Isaac Dupree <id@isaac.cedarswampstudios.org>
4189   * document BreakArray better
4191 Fri Dec 28 11:39:22 EST 2007  Isaac Dupree <id@isaac.cedarswampstudios.org>
4192   * properly ifdef BreakArray for GHCI
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.
4200 Fri Jan  4 14:21:21 EST 2008  Isaac Dupree <id@isaac.cedarswampstudios.org>
4201   * MyEither-->EitherString to allow Haskell98 instance
4203 Fri Jan  4 16:13:29 EST 2008  Isaac Dupree <id@isaac.cedarswampstudios.org>
4204   * re-portabilize Pretty, and corresponding changes
4206 Fri Jan  4 17:19:55 EST 2008  Isaac Dupree <id@isaac.cedarswampstudios.org>
4207   * Augment FastTypes to be much more complete
4209 Fri Jan  4 20:14:19 EST 2008  Isaac Dupree <id@isaac.cedarswampstudios.org>
4210   * use FastFunctions, cleanup FastString slightly
4212 Fri Jan  4 21:00:22 EST 2008  Isaac Dupree <id@isaac.cedarswampstudios.org>
4213   * Massive de-"#", mostly Int# --> FastInt (#1405)
4215 Fri Jan  4 21:02:49 EST 2008  Isaac Dupree <id@isaac.cedarswampstudios.org>
4216   * miscellaneous unnecessary-extension-removal
4218 Sat Jan  5 19:30:13 EST 2008  Isaac Dupree <id@isaac.cedarswampstudios.org>
4219   * add FastFunctions
4222[Add missing extendSubst
4225 Oops -- missed this from previous commit; sorry
4228[Add -fspec-inline-join-points to SpecConstr
4231 This patch addresses a problem that Roman found in SpecConstr.  Consider:
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)) ...
4242 We want to make specialised versions for 'foo' for the patterns
4243        Nothing  (Just v)
4244        (Just a) (Just b)
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.
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
4259 The (experimental) flag is static for now, and I have not even
4260 documented it properly.
4264[Fix references to Filepath
4265Clemens Fruhwirth <clemens@endorphin.org>**20080117134139]
4266[Fix egregious error in earlier "Record evaluated-ness" patch
4268[Eliminate warnings with -DDEBUG
4270[Record evaluated-ness information correctly for strict constructors
4273 The add_evals code in Simplify.simplAlt had bit-rotted.  Example:
4275   data T a = T !a
4276   data U a = U !a
4278   foo :: T a -> U a
4279   foo (T x) = U x
4281 Here we should not evaluate x before building the U result, because
4282 the x argument of T is already evaluated.
4284 Thanks to Roman for finding this.
4288[In float-out, make sure we abstract over the type variables in the kind of a coercion
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'.
4294 The fix is simple.
4297[Fix broken debug warning
4299[Complain sensibly if you try to use scoped type variables in Template Haskell
4302 This fixes Trac #2024; worth merging onto 6.8 branch.
4305[Comments only
4307[Extra instance for Outputable on 5-tuples
4309[Fix the -frule-check pass
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.
4315 This should fix it.
4318[Add dyn-wrapper.c used as cross-plattform launch wrapper for executables using dynamic libraries in non-standard places
4319Clemens Fruhwirth <clemens@endorphin.org>**20080116220603]
4320[Use runPhase_MoveBinary also for generating a dynamic library wrapper
4321Clemens Fruhwirth <clemens@endorphin.org>**20080116220420]
4322[Remove -fhardwire-lib-paths in favour of -dynload sysdep
4323Clemens Fruhwirth <clemens@endorphin.org>**20080110121736]
4324[ghc-inplace defaults to -fhardwire-lib-paths. Change that to -dynload wrapped
4325Clemens Fruhwirth <clemens@endorphin.org>**20080110090839]
4326[Add -dynload flag as dynamic flag.
4327Clemens Fruhwirth <clemens@endorphin.org>**20080116205710]
4328[Add a missing import
4329Ian Lynagh <igloo@earth.li>**20080116174149]
4330[Fix Makefile generatin on Windows
4331Ian Lynagh <igloo@earth.li>**20080116162752]
4332[Fix slash direction on Windows with the new filePath code
4333Ian Lynagh <igloo@earth.li>**20080116154317]
4334[Fix typo
4335Ian Lynagh <igloo@earth.li>**20080116011953]
4336[The Core type-matcher should look through PredTypes
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.
4345 For this to happen we need to get a situation where we have
4347   a = :DC blah blah    -- Dictionary
4348   ....(f a).....
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.
4357[A bottoming function should have infinite arity
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.
4364 This improves eta expansion.  I spotted it when looking at the function
4366   Data.Array.Parallel.Arr.BBArr.writeMBB
4368 in the ndp package.
4372[Add Main.dyn_o deployed into the RTS library dir to linking (see DLLNOTES for rational)
4373Clemens Fruhwirth <clemens@endorphin.org>**20080110091217]
4374[Refactor cross-plattform process spawning from ghc-inplace into shell-tools.c
4375Clemens Fruhwirth <clemens@endorphin.org>**20080110090721]
4376[More verbose error reporting in mk/target.mk
4377Clemens Fruhwirth <clemens@endorphin.org>**20071231170715]
4378[Fix generating dependencies for different ways now we use FilePath
4379Ian 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
4385[Fix utils/Util for debug build
4387[Give an error if view pattern syntax is used in an expression; fixes #2033
4388Ian Lynagh <igloo@earth.li>**20080114115031]
4389[FIX BUILD (Solaris): include fcntl.h for file operations
4390Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080115051844]
4391[Fix warning when USE_READLINE is unset
4392Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080115015014]
4393[Remove an extra ) that was breaking the build on Windows
4394Ian Lynagh <igloo@earth.li>**20080114103953]
4395[Fix warnings in utils/ListSetOps
4396Ian Lynagh <igloo@earth.li>**20080113150017]
4397[Fix warnings in utils/Panic
4398Ian Lynagh <igloo@earth.li>**20080113142939]
4399[Fix warnings in utils/UniqSet
4400Ian Lynagh <igloo@earth.li>**20080113142604]
4401[Fix warnings in utils/Maybes
4402Ian Lynagh <igloo@earth.li>**20080113142347]
4403[Fix warnings in utils/BufWrite
4404Ian Lynagh <igloo@earth.li>**20080113141630]
4405[Fix warnings in utils/FastTypes
4406Ian Lynagh <igloo@earth.li>**20080113141612
4407 Split off a FastBool module, to avoid a circular import with Panic
4409[Fix warnings in utils/OrdList
4410Ian Lynagh <igloo@earth.li>**20080113132042]
4411[Fix warnings in utils/FastMutInt
4412Ian Lynagh <igloo@earth.li>**20080113131830]
4413[Fix warnings in utils/State
4414Ian Lynagh <igloo@earth.li>**20080113131658]
4415[Only initialise readline if we are connected to a terminal
4416Ian Lynagh <igloo@earth.li>**20080113124107
4417 Patch from Bertram Felgenhauer <int-e@gmx.de>
4419[Fix warnings in utils/Util
4420Ian Lynagh <igloo@earth.li>**20080113005832]
4421[Fix warnings in utils/Bag.lhs
4422Ian Lynagh <igloo@earth.li>**20080113002037]
4423[Add GMP_INCLUDE_DIRS in a couple of places
4424Ian Lynagh <igloo@earth.li>**20080112234215
4425 Fixes the build on OpenBSD (trac #2009). Based on a patch from kili.
4427[Tweak whitespace in HsExpr
4428Ian Lynagh <igloo@earth.li>**20080112185753]
4429[Fix warnings in HsExpr
4430Ian Lynagh <igloo@earth.li>**20080112181444]
4431[FilePath fixes
4432Ian Lynagh <igloo@earth.li>**20080112172837]
4433[don't initialize readline needlessly
4434Ian 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>
4440[Fix whitespace
4441Ian Lynagh <igloo@earth.li>**20080112155214]
4442[Use System.FilePath
4443Ian Lynagh <igloo@earth.li>**20080112154459]
4444[Fix filename completion by adding trailing spaces/slashes manually.
4446[Use command-dependent word break characters for tab completion in ghci.  Fixes bug #998.
4448[Fix 2030: make -XScopedTypeVariables imply -XRelaxedPolyRec
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.
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!)
4461[More refactoring in getCoreToDo
4462Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109023747]
4463[Document -fsimplifier-phases
4464Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109022822]
4465[Add -fsimplifier-phases option
4466Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109022449
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.
4473[Refactor getCoreToDo slightly
4474Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080109014359]
4475[Fix Trac #2018: float-out was ignoring the kind of a coercion variable
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.
4482 I did a bit of refactoring at the same time.
4484 Test is tc241
4486 MERGE to stable branch
4489[Make the treatment of equalities more uniform
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.
4499[Fix Trac #2017
4501[Add -XImpredicativeTypes, and tighten up type-validity checking (cf Trac 2019)
4504 Somehow we didn't have a separate flag for impredicativity; now we do.
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. 
4512 This patch insists on monotypes in several places where we were (wrongly)
4513 too liberal before.
4515 Could be merged to 6.8 but no big deal.
4519[pass -no-user-package-conf to ghc-inplace
4520Simon Marlow <simonmar@microsoft.com>**20080104162840]
4521[Fix build: Recent instance shuffling left us with overlapping instances
4522Ian Lynagh <igloo@earth.li>**20080106221547]
4523[Add instructions for building docs to README
4524Ian Lynagh <igloo@earth.li>**20080106215723]
4525[A little refactoring of GenIfaceEq to make the Outputable instance into H98
4527[Make the instance of DebugNodes more H98-like
4529[change CmmActual, CmmFormal to use a data CmmHinted rather than tuple (#1405)
4530Isaac 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...
4536[generalize instance Outputable GenCmm to H98 (#1405)
4537Isaac Dupree <id@isaac.cedarswampstudios.org>**20071226175915]
4538[move and generalize another instance (#1405)
4539Isaac 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)
4549[move and generalize an instance (#1405)
4550Isaac 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)
4554[Do not consult -XGADTs flag when pattern matching on GADTs
4557 See Trac #2004, and Note [Flags and equational constraints] in TcPat.
4560[Add a note about primop wrappers (cf Trac #1509)
4562[Document SOURCE pragma; clarify TH behavior for mutually-recurive modules (Trac #1012)
4564[White space and comments only
4566[Optionally use libffi to implement 'foreign import "wrapper"' (#793)
4567Simon Marlow <simonmar@microsoft.com>**20080103170236
4568 To enable this, set UseLibFFI=YES in mk/build.mk. 
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.
4577 Right now, you must have libffi installed on your system.  I used the
4578 one supplied by Debian/Ubuntu.
4580[remove trace apparently left in by accident
4581Simon Marlow <simonmar@microsoft.com>**20080103163805]
4582[Remove -funfolding-update-in-place flag documentation
4585 This flag does nothing, and should have been removed ages ago. (GHC
4586 no longer does update-in-place.)
4588 MERGE to 6.8 branch
4591[Fix warnings with newer gcc versions (I hope)
4592Simon Marlow <simonmar@microsoft.com>**20080103140338]
4593[FIX #1898: add a missing UNTAG_CLOSURE() in checkBlackHoles
4594Simon Marlow <simonmar@microsoft.com>**20080103112717]
4595[fix validation failure on non-i386
4596Simon Marlow <simonmar@microsoft.com>**20080102151740]
4597[expand "out of stack slots" panic to suggest using -fregs-graph, see #1993
4598Simon Marlow <simonmar@microsoft.com>**20080102150737]
4599[Warning clean, and fix compilation with GHC 6.2.x
4600Simon Marlow <simonmar@microsoft.com>**20080102114529]
4601[Add dead code elimination in cmmMiniInline
4602Simon 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.
4608[implement prefix unboxed tuples (part of #1509)
4609Isaac Dupree <id@isaac.cedarswampstudios.org>**20080102124001]
4610[Link libgmp.a statically into libHSrts.dll on Windows
4611Clemens Fruhwirth <clemens@endorphin.org>**20080101154017]
4612[Embedd DLL name into its import library, so client libs reference them properly in .idata
4613Clemens Fruhwirth <clemens@endorphin.org>**20080101152157]
4614[Add package dependencies to link pass when building ghc package (required for windows DLL build)
4615Clemens Fruhwirth <clemens@endorphin.org>**20080101152101]
4616[Fix building libHSrts.dll by using ghc-pkg instead of grepping in base.cabal
4617Clemens Fruhwirth <clemens@endorphin.org>**20071230193952]
4618[Add installPackage to dependencies of make.library.* as it's used by the rule
4619Clemens Fruhwirth <clemens@endorphin.org>**20071229162707]
4620[Install dynlibs correctly
4621Clemens Fruhwirth <clemens@endorphin.org>**20071228184024
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.
4627[import ord that alex secretly imported
4628Isaac Dupree <id@isaac.cedarswampstudios.org>**20071228175727]
4629[add missing import that happy -agc secretly provided
4630Isaac Dupree <id@isaac.cedarswampstudios.org>**20071227171335]
4631[correct type mistake, hidden by happy -agc coercions!
4632Isaac Dupree <id@isaac.cedarswampstudios.org>**20071226140743]
4633[API changes for cabal-HEAD
4634Clemens Fruhwirth <clemens@endorphin.org>**20071227143114
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)
4640[Extend API for compiling to and from Core
4641Tim Chevalier <chevalier@alum.wellesley.edu>**20071225200411
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.
4648[When complaining about non-rigid context, give suggestion of adding a signature
4650[Improve handling of newtypes (fixes Trac 1495)
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
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.
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.
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.
4676        Ian, see if this merges easily to the branch
4677        If not, I don't think it's essential to fix 6.8
4680[Fix Trac #1981: seq on a type-family-typed expression
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.
4687 MERGE to the 6.8 branch.
4691[Comment only
4693[Fix nasty recompilation bug in MkIface.computeChangedOccs
4696        MERGE to 6.8 branch
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.
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}
4706 This fixes the problem.  The patch should merge easily onto the branch.
4710[Fix Trac #1988; keep the ru_fn field of a RULE up to date
4713 The ru_fn field was wrong when we moved RULES from one Id to another.
4714 The fix is simple enough.
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. 
4720 This patch fixes the crash though.
4723[Add better panic message in getSRTInfo (Trac #1973)
4725[Remove obselete code for update-in-place (which we no longer do)
4727[Implement generalised list comprehensions
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.
4735   The syntax is not exactly as in the paper; see the user manual entry
4736   for details.
4738   You need an accompanying patch to the base library for this stuff
4739   to work.
4741   The patch is the work of Max Bolingbroke [batterseapower@hotmail.com],
4742   with some advice from Simon PJ.
4744   The related GHC Wiki page is
4745     http://hackage.haskell.org/trac/ghc/wiki/SQLLikeComprehensions
4748[More bindist-publishing fixes and refactoring
4749Ian Lynagh <igloo@earth.li>**20071218144505]
4750[Fix publishing the docs
4751Ian Lynagh <igloo@earth.li>**20071216122544]
4752[FIX #1980: must check for ThreadRelocated in killThread#
4753Simon Marlow <simonmar@microsoft.com>**20071217164610]
4754[Eliminate external GMP dependencies
4755Manuel 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
4760[Include ~/Library/Frameworks in the framework searchpath
4761Ian Lynagh <igloo@earth.li>**20071217233457
4762 Patch from Christian Maeder
4764[Make ghcii.sh executable
4765Ian Lynagh <igloo@earth.li>**20071217195734]
4766[Don't rely on distrib/prep-bin-dist-mingw being executable
4767Ian Lynagh <igloo@earth.li>**20071217195554]
4768[always try to remove the new file before restoring the old one (#1963)
4769Simon Marlow <simonmar@microsoft.com>**20071214123345]
4770[Fix a bug in gen_contents_index
4771Ian Lynagh <igloo@earth.li>**20071212121154
4772 The library doc index thought that the docs were in $module.html, rather
4773 than $package/$module.html.
4775[Fix lifting of case expressions
4776Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071215000837
4778 We have to explicity check for empty arrays in each alternative as recursive
4779 algorithms wouldn't terminate otherwise.
4781[Use (UArr Int) instead of PArray_Int# in vectorisation
4782Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071215000739]
4783[Fix bug in VectInfo loading
4784Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214230914]
4785[Remove unused vectorisation built-in
4786Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214011015]
4787[Treat some standard data cons specially during vectorisation
4788Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213034855
4790 This is a temporary hack which allows us to vectorise literals.
4792[More vectorisation-related built ins
4793Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213034839]
4794[Track changes to package ndp
4795Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071212062714]
4796[Add vectorisation built-ins
4797Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071212040521]
4798[FIX #1963: catch Ctrl-C and clean up properly
4799Simon Marlow <simonmar@microsoft.com>**20071213154056]
4800[Document the new threshold flags
4801Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214003003]
4802[Separate and optional size thresholds for SpecConstr and LiberateCase
4803Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071214002719
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.
4809[Make HscTypes.tyThingId respond not panic on ADataCon
4811[Use Unix format for RnPat (no other change)
4813[Improve free-variable handling for rnPat and friends (fixes Trac #1972)
4816 As well as fixing the immediate problem (Trac #1972) this patch does
4817 a signficant simplification and refactoring of pattern renaming.
4819 Fewer functions, fewer parameters passed....it's all good.  But it
4820 took much longer than I expected to figure out.
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.
4826 (No need to merge to the 6.8 branch, but no harm either.)
4830[Allow more than 3 simplifier iterations to be run in phase 0
4831Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213040835
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.
4837[Document -ddump-simpl-phases
4838Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213040822]
4839[New flag: -ddump-simpl-phases
4840Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213040644
4842 This outputs the core after each simplifier phase (i.e., it produces less
4843 information that -ddump-simpl-iterations).
4845[Don't dump simplifier iterations with -dverbose-core2core
4846Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071213034635
4848 SimonPJ says this is the correct behaviour. We still have
4849 -ddump-simpl-iterations.
4851["list --simple-output" should be quiet when there are no packages to list
4852Simon Marlow <simonmar@microsoft.com>**20071212102230
4854 Previously:
4856 $ ghc-pkg list --user --simple-output
4857 ghc-pkg: no matches
4858 $
4860 Now:
4862 $ ghc-pkg list --user --simple-output
4863 $
4865[Fix vectorisation bug
4866Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071206233015]
4867[Vectorisation-related built ins
4868Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071206040829]
4869[Teach vectorisation about some temporary conversion functions
4870Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071206032547]
4871[Vectorise case of unit correctly
4872Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205221305]
4873[Teach vectorisation about singletonP
4874Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205221240]
4875[Optimise desugaring of parallel array comprehensions
4876Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205221213]
4877[Teach vectorisation about tuple datacons
4878Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205050221]
4879[Track additions to package ndp
4880Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205042649]
4881[Track changes to package ndp
4882Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071205033859]
4883[Improve pretty-printing of InstDecl
4886 Fixes Trac #1966.
4889[Comments only
4890Pepe Iborra <mnislaih@gmail.com>**20071208204815]
4891[Refactoring only
4892Pepe Iborra <mnislaih@gmail.com>**20071208195222
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.
4899[Change the format used by :print to show the content of references
4900Pepe Iborra <mnislaih@gmail.com>**20071208193013
4902     This comes as result of the short discussion linked below.
4904     http://www.haskell.org/pipermail/cvs-ghc/2007-December/040049.html
4907[Help the user when she tries to do :history without :trace
4908Pepe Iborra <mnislaih@gmail.com>**20071208180918
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
4914[Prevent the binding of unboxed things by :print
4915Pepe Iborra <mnislaih@gmail.com>**20071208181830]
4916[Coercions from boxy splitters must be sym'ed in pattern matches
4917Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20071208105018]
4918[Properly keep track of whether normalising given or wanted dicts
4919Manuel 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).
4926[TcPat.tcConPat uses equalities instead of GADT refinement
4927Manuel 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.
4934[Use installPackage for register --inplace as well as installing
4935Ian 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.
4939[Fix the libraries Makefile
4940Ian 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
4946[Copy hscolour.css into dist/... so it gets installed with the library docs
4947Ian Lynagh <igloo@earth.li>**20071205013703]
4948[Add the hscolour.css from hscolour 1.8
4949Ian Lynagh <igloo@earth.li>**20071205011733]
4950[BIN_DIST_INST_SUBDIR Needs to be defined in config.mk so ./Makefile can see it
4951Ian Lynagh <igloo@earth.li>**20071207121317]
4952[#include ../includes/MachRegs.h rather than just MachRegs.h
4953Ian 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.
4957[Fix bindist creation: readline/config.mk is gone
4958Ian Lynagh <igloo@earth.li>**20071203123031]
4959[FIX #1843: Generate different instructions on PPC
4960Ian Lynagh <igloo@earth.li>**20071203123237
4961 The old ones caused lots of
4962     unknown scattered relocation type 4
4963 errors. Patch from Chris Kuklewicz.
4965[Refactor gen_contents_index
4966Ian Lynagh <igloo@earth.li>**20071207183538
4967 Also fixes it with Solaris's sh, spotted by Christian Maeder
4969[Use GHC.Exts rather than GHC.Prim
4970Ian Lynagh <igloo@earth.li>**20071202234222]
4971[Alter the base:GHC.Prim hack in installPackage, following changes in base
4972Ian Lynagh <igloo@earth.li>**20071202215719]
4973[Remove debug warning, and explain why
4975[comment only
4976Simon Marlow <simonmar@microsoft.com>**20071206092422]
4977[comment typo
4978Simon Marlow <simonmar@microsoft.com>**20071206092412]
4979[add Outputable instance for OccIfaceEq
4980Simon Marlow <simonmar@microsoft.com>**20071206092403]
4981[Workaround for #1959: assume untracked names have changed
4982Simon 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.
4988[FIX part of #1959: declaration versions were not being incremented correctly
4989Simon 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.
4998 This doesn't completely fix #1959, but it gets part of the way there.
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").
5004[move FP_FIND_ROOT after the "GHC is required" check
5005Simon Marlow <simonmar@microsoft.com>**20071205101814]
5006[FIX #1110: hackery also needed when running gcc for CPP
5007Simon Marlow <simonmar@microsoft.com>**20071205150230]
5008[Teach :print to follow references (STRefs and IORefs)
5009Pepe Iborra <mnislaih@gmail.com>**20071204105511
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 {(_ : _)})
5021 I used braces to denote the contents of a reference.
5022 Perhaps there is a more appropriate notation?
5024[refactoring only
5025Pepe Iborra <mnislaih@gmail.com>**20071202125400]
5026[Change --shared to -shared in Win32 DLL docs
5028[protect console handler against concurrent access (#1922)
5029Simon Marlow <simonmar@microsoft.com>**20071204153918]
5030[Make eta reduction check more carefully for bottoms (fix Trac #1947)
5033 Eta reduction was wrongly transforming
5034        f = \x. f x
5035 to
5036        f = f
5038 Solution: don't trust f's arity information; instead look at its
5039 unfolding.  See Note [Eta reduction conditions]
5041 Almost all the new lines are comments!
5045[Improve inlining for INLINE non-functions
5048 (No need to merge to 6.8, but no harm if a subsequent patch needs it.)
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.
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.
5060[fix race conditions in sandboxIO (#1583, #1922, #1946)
5061Simon Marlow <simonmar@microsoft.com>**20071204114444
5062 using the new block-inheriting forkIO (#1048)
5064[:cd with no argument goes to the user's home directory
5065Simon Marlow <simonmar@microsoft.com>**20071204113945
5066 Seems better than getting a confusing 'cannot find directory' exception.
5068[forkIO starts the new thread blocked if the parent is blocked (#1048)
5069Simon Marlow <simonmar@microsoft.com>**20071204110947]
5070[Improve eta reduction, to reduce Simplifier iterations
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:
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
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. 
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.
5089 Should do a full nofib run though.
5092[Don't default to stripping binaries when installing
5093Ian Lynagh <igloo@earth.li>**20071202195817]
5094[Improve pretty-printing for Insts
5096[Reorganise TcSimplify (again); FIX Trac #1919
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.
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.
5110 It's still a swamp.  But it's a bit better.
5113[FIX #1914: GHCi forgot all the modules that were loaded before an error
5114Simon Marlow <simonmar@microsoft.com>**20071130130734]
5115[FIX #1744: ignore the byte-order mark at the beginning of a file
5116Simon Marlow <simonmar@microsoft.com>**20071130101100]
5117[FIX Trac #1935: generate superclass constraints for derived classes
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.
5125 The test deriving-1935 tests both cases.
5129[Print a bit more info in VarBinds (no need to merge)
5131[Check for duplicate bindings in CoreLint
5133[add comment
5134Simon Marlow <simonmar@microsoft.com>**20071128111417]
5135[FIX #1916: don't try to convert float constants to int in CMM optimizer
5136Bertram Felgenhauer <int-e@gmx.de>**20071122095513]
5137[give a more useful message when the static flags have not been initialised (#1938)
5138Simon Marlow <simonmar@microsoft.com>**20071127135435]
5139[Rebuild utils with the stage1 compiler when making a bindist; fixes trac #1860
5140Ian 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.
5144[Remove the --print-docdir flag
5145Ian Lynagh <igloo@earth.li>**20071127195605
5146 It wasn't doing the right thing for bindists. Let's rethink...
5148[FIX #1925: the interpreter was not maintaining tag bits correctly
5149Simon Marlow <simonmar@microsoft.com>**20071127122614
5150 See comment for details
5152[add missing instruction: ALLOC_AP_NOUPD
5153Simon Marlow <simonmar@microsoft.com>**20071127122604]
5154[Check tag bits on the fun pointer of a PAP
5155Simon Marlow <simonmar@microsoft.com>**20071126160420]
5156[canonicalise the path to HsColour
5157Simon Marlow <simonmar@microsoft.com>**20071126141614]
5158[Consistently put www. on the front of haskell.org in URLs
5159Ian Lynagh <igloo@earth.li>**20071126215256]
5160[Fix some more URLs
5161Ian Lynagh <igloo@earth.li>**20071126214147]
5162[Tweak some URLs
5163Ian Lynagh <igloo@earth.li>**20071126194148]
5164[Fix some links
5165Ian Lynagh <igloo@earth.li>**20071126184406]
5166[Copy gmp stamps into bindists, so we don't try and rebuild gmp
5167Ian Lynagh <igloo@earth.li>**20071125211919]
5168[On Windows, Delete the CriticalSection's we Initialize
5169Ian Lynagh <igloo@earth.li>**20071125125845]
5170[On Windows, add a start menu link to the flag reference
5171Ian Lynagh <igloo@earth.li>**20071125124429]
5172[Remove html/ from the paths we put in the start menu on Windows
5173Ian Lynagh <igloo@earth.li>**20071125124150]
5174[MERGED: Make ":" in GHCi repeat the last command
5175Ian 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.
5183[MERGED: Put library docs in a $pkg, rather than $pkgid, directory; fixes trac #1864
5184Ian Lynagh <igloo@earth.li>**20071124212305
5185 Ian Lynagh <igloo@earth.li>**20071124171220
5187[Don't make a library documentation prologue
5188Ian Lynagh <igloo@earth.li>**20071124211943
5189 It's far too large now, and no-one complained when 6.8.1 didn't have one.
5191[Don't put package version numbers in links in index.html
5192Ian Lynagh <igloo@earth.li>**20071124211629]
5193[Define install-strip in Makefile
5194Ian Lynagh <igloo@earth.li>**20071124205037]
5195[Define install-strip in distrib/Makefile
5196Ian Lynagh <igloo@earth.li>**20071124204803]
5197[Install gmp from bindists; fixes trac #1848
5198Ian Lynagh <igloo@earth.li>**20071124185240]
5199[(native gen) fix code generated for GDTOI on x86_32
5200Bertram Felgenhauer <int-e@gmx.de>**20071121063942
5201 See trac #1910.
5203[Copy the INSTALL hack from mk/config.mk.in into distrib/Makefile-bin-vars.in
5204Ian 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.
5208[Make install-sh executable /before/ we try to find it
5209Ian Lynagh <igloo@earth.li>**20071124162450]
5210[Document --info in the +RTS -? help
5211Ian Lynagh <igloo@earth.li>**20071123204352]
5212[MERGED: If we have hscolour then make source code links in teh haddock docs
5213Ian Lynagh <igloo@earth.li>**20071123233113
5214 Fri Nov 23 13:15:59 PST 2007  Ian Lynagh <igloo@earth.li>
5216[Tidy and trim the type environment in mkBootModDetails
5219 Should fix Trac #1833
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.
5228[refactor: HscNothing and boot modules do not need desugaring
5229Simon Marlow <simonmar@microsoft.com>**20071123135237]
5230[FIX #1910: fix code generated for GDTOI on x86_32
5231Bertram Felgenhauer <int-e@gmx.de>*-20071121102627]
5232[Properly ppr InstEqs in wanteds of implication constraints
5233Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20071122093002]
5234[FIX #1910: fix code generated for GDTOI on x86_32
5235Bertram Felgenhauer <int-e@gmx.de>**20071121102627]
5236[Add built-in Double operations to vectorisation
5237Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071122002517]
5238[Teach vectorisation about Double
5239Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071121054932]
5240[Vectorise polyexprs with notes
5241Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071121053102]
5242[Make rebindable do-notation behave as advertised
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.
5249 With this patch, rebindable do-notation really does type as if you
5250 had written the original (>>) and (>>=) operations in desguared form.
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).
5259 Thanks to Pepe for the first draft of the patch.
5262[Add DEBUG-only flag -dsuppress-uniques to suppress printing of uniques
5265 This is intended only for debugging use: it makes it easier to
5266 compare two variants without the variations between uniques mattering.
5268 (Of course, you can't actually feed the output to the C compiler
5269 or assembler and expect anything sensible to happen!)
5272[Add -dcore-lint when validating libraries
5274[Fix Trac #1913: check data const for derived types are in scope
5277 When deriving an instance, the data constructors should all be in scope.
5278 This patch checks the condition.
5282[Fix Trac #1909: type of map in docs
5284[Move file locking into the RTS, fixing #629, #1109
5285Simon 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).
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).
5299[FIX Trac #1825: standalone deriving Typeable
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.
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.
5310 MERGE to 6.8 branch
5313[FIX #1715: egregious bug in ifaceDeclSubBndrs
5316 ifaceDeclSubBndrs didn't have an IfaceSyn case; but with type
5317 families an IfaceSyn can introduce subordinate binders.  Result:
5318 chaos.
5320 The fix is easy though.  Merge to 6.8 branch.
5324[Always do 'setup makefile' before building each library
5325Simon 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.
5333[FIX #1847 (improve :browse! docs, fix unqual)
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
5342[Track changes to package ndp
5343Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071120033716]
5344[Temporary hack for passing PArrays from unvectorised to vectorised code
5345Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071120024545]
5346[Bind NDP stuff to [:.:] arrays
5347Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119020302]
5348[Don't treat enumerations specially during vectorisation for the moment
5349Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119013729]
5350[Fix bugs in vectorisation of case expressions
5351Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119013714]
5352[More built-in NDP combinators
5353Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071119012205]
5354[New vectorisation built-ins
5355Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118051940]
5356[Fix bug in conversion unvect/vect
5357Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118051926]
5358[Extend built-in vectorisation environments
5359Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118045219]
5360[Fix bug in generation of environments for vectorisation
5361Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118045203]
5362[Add builtin var->var mapping to vectorisation
5363Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118042605]
5364[Extend vectorisation built-in mappings with datacons
5365Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118034351]
5366[Change representation of parallel arrays of enumerations
5367Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118033355]
5368[Add vectorisation-related builtin
5369Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071118031513]
5370[Teach vectorisation about Bool
5371Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117042714]
5372[Incomplete support for boxing during vectorisation
5373Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117040739]
5374[Make sure some TyCons always vectorise to themselves
5375Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117040537]
5376[Simple conversion vectorised -> unvectorised
5377Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117023029]
5378[Fix bug in case vectorisation
5379Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071117015014]
5380[Vectorisation of algebraic case expressions
5381Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116074814]
5382[More vectorisation-related built-ins
5383Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116061831]
5384[Vectorisation utilities
5385Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116051037]
5386[Add vectorisation built-ins
5387Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116050959]
5388[Fix vectorisation of binders in case expressions
5389Roman Leshchinskiy <rl@cse.unsw.edu.au>**20071116021833]
5390[Two small typos in the flags summary (merge to 6.8 branch)
5392[Improve the situation for Trac #959: civilised warning instead of a trace msg
5395 This doesn't fix the root cause of the bug, but it makes the report
5396 more civilised, and points to further info.
5399[FIX Trac #1806: test for correct arity for datacon in infix pattern patch
5402 Happily the fix is easy; pls merge
5405[Accept x86_64-*-freebsd* as well as amd64-*-freebsd* in configure.ac
5406Ian Lynagh <igloo@earth.li>**20071117154502
5407 Patch from Brian P. O'Hanlon
5409[Attempt at fixing #1873, #1360
5410Simon Marlow <simonmar@microsoft.com>**20071116152148
5412 I think I figured out a reasonable way to manage the GHCi context,
5413 comments welcome.
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.
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.
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.
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.
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}.
5440[Wibble to fix Trac #1901 (shorten messsage slightly)
5442[Improve links from flag reference to the relevant section; and improve doc of RankN flags
5444[FIX Trac #1901: check no existential context in H98 mode
5446[Improve documentation of data type declarations (Trac #1901)
5448[Change the command-line semantics for query commands
5449Simon Marlow <simonmar@microsoft.com>**20071116132046
5451 From the help text:
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.
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.
5462[use "ghc-pkg latest --global" instead of "ghc-pkg list --simple-output"
5463Simon 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.
5467[Disallow installing packages whose names  differ in case only.
5468Simon 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.
5472[FIX BUILD (with GHC 6.2.x): update .hi-boot file
5473Simon Marlow <simonmar@microsoft.com>**20071116101227]
5474[FIX #1828: installing to a patch with spaces in
5475Simon 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.
5484[on Windows, install to a directory with spaces (test for #1828)
5485Simon Marlow <simonmar@microsoft.com>**20071115155327]
5486[FIX #1679: crash on returning from a foreign call
5487Simon 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.
5491[Avoid the use of unversioned package dependencies
5492Simon Marlow <simonmar@microsoft.com>**20071115103249
5493 Fortunately "ghc-pkg list $pkg --simple-output" is a good way to add
5494 the version number.
5496[FIX #1596 (remove deprecated --define-name)
5497Simon Marlow <simonmar@microsoft.com>**20071114165323
5498 Also remove the old command-line syntax for ghc-pkg, which was not
5499 documented.  Do not merge.
5501[FIX #1837: remove deprecated support for unversioned dependencies (do not merge)
5502Simon Marlow <simonmar@microsoft.com>**20071114161044
5506Pepe Iborra <mnislaih@gmail.com>**20071114233356]
5507[Make pprNameLoc more robust in absence of loc information
5508Pepe Iborra <mnislaih@gmail.com>**20071114233343]
5509[Try to manage the size of the text rendered for ':show bindings'
5510Pepe Iborra <mnislaih@gmail.com>**20071114231601]
5511[Make the Term ppr depth aware
5512Pepe Iborra <mnislaih@gmail.com>**20071114183417]
5513[Use paragraph fill sep where possible
5514Pepe Iborra <mnislaih@gmail.com>**20071114181233]
5515[Make SpecConstr work again
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!
5522 Well done Kenny Lu for spotting this.  The fix is easy.
5524 Merge into 6.8 please.
5529[Documentation only - fix typo in flags reference
5530Tim Chevalier <chevalier@alum.wellesley.edu>**20071115055748]
5531[Avoid making Either String an instance of Monad in the Haddock parser
5532David Waern <david.waern@gmail.com>**20071114204050]
5533[FIX 1463 (implement 'ghc-pkg find-module')
5536 - the ticket asks for a module2package lookup in ghc-pkg
5537   (this would be useful to have in cabal, as well)
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:
5543   $ ./ghc-pkg-inplace find-module Var
5544   c:/fptools/ghc/driver/package.conf.inplace:
5545       (ghc-6.9.20071106)
5547   $ ./ghc-pkg-inplace find-module Data.Sequence
5548   c:/fptools/ghc/driver/package.conf.inplace:
5549       containers-0.1
5551 - implemented as a minor variation on listPackages
5553 (as usual, it would be useful if one could combine
5554 multiple queries into one)
5557[remove --define-name from the --help usage message (#1596)
5558Simon Marlow <simonmar@microsoft.com>**20071114153417
5561[FIX #1837: emit deprecated message for unversioned dependencies
5562Simon Marlow <simonmar@microsoft.com>**20071114153010]
5563[Fix #782, #1483, #1649: Unicode GHCi input
5564Simon 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).
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.
5574[Fix build
5575David 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.
5579[FIX Trac 1662: actually check for existentials in proc patterns
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!
5585 Test is arrowfail004
5588[FIX Trac 1888; duplicate INLINE pragmas
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
5596 All easy.  Test is rnfail048.
5599[Run the -frule-check pass more often (when asked)
5601[GHCi debugger: added a new flag, -fno-print-binding-contents
5602Pepe Iborra <mnislaih@gmail.com>**20071113174539
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.
5609[Fix Trac 1865: GHCi debugger crashes with :print
5610Pepe Iborra <mnislaih@gmail.com>**20071113170113]
5611[Replaced two uses of head b explicit pattern matching
5612Pepe Iborra <mnislaih@gmail.com>**20071013113136]
5613[Print binding contents in :show bindings
5614Pepe Iborra <mnislaih@gmail.com>**20071006123952]
5615[ Leftovers from the 1st GHCi debugger prototype
5616Pepe Iborra <mnislaih@gmail.com>**20071004204718]
5617[Following an indirection doesn't count as a RTTI step
5618Pepe Iborra <mnislaih@gmail.com>**20070928091941]
5619[FIX #1653 (partially): add -X flags to completion for :set
5620Simon Marlow <simonmar@microsoft.com>**20071113153257]
5621[Merge from Haddock: Add <<url>> for images
5622David Waern <david.waern@gmail.com>**20071112220537
5623 A merge of this patch:
5625   Mon Aug  7 16:22:14 CEST 2006  Simon Marlow <simonmar@microsoft.com>
5626     * Add <<url>> for images
5627     Submitted by: Lennart Augustsson
5629 Please merge to the 6.8.2 branch.
5631[Improve documentation of INLINE, esp its interactions with other transformations
5633[Comment re Trac #1220
5635[Merge from Haddock: Modify lexing of /../
5636David Waern <david.waern@gmail.com>**20071112023856
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.
5645 Please merge this to the 6.8.2 branch.
5647[Merge from Haddock: allow blank lines inside code blocks
5648David Waern <david.waern@gmail.com>**20071112013439
5650   Tue Jan  9 14:14:34 CET 2007  Simon Marlow <simonmar@microsoft.com>
5651     * allow blank lines inside a @...@ code block
5653 Please merge this to the 6.8.2 branch
5655[Merge of a patch from the old Haddock branch:
5656David Waern <david.waern@gmail.com>**20071112013143
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
5661 Please merge this to the 6.8.2 branch
5663[Remove ex-extralibs from libraries/Makefile
5664Ian Lynagh <igloo@earth.li>**20071111213618]
5665[Remove the X11 and HGL libraries from extralibs
5666Ian 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).
5670[arrows is no longer an extralib
5671Ian Lynagh <igloo@earth.li>**20071027123656]
5672[Turn -fprint-bind-result off by default
5673Ian Lynagh <igloo@earth.li>**20071111001126]
5674[TAG 2007-11-11
5675Ian Lynagh <igloo@earth.li>**20071111161540]
5676Patch bundle hash: