5 patches for repository /Users/mbolingbroke/Programming/Checkouts/ghc.realhead: Sat Oct 2 10:39:59 EDT 2010 Max Bolingbroke * Implement and document the Haskell' lambda-case feature Sat Oct 2 10:45:50 EDT 2010 Max Bolingbroke * Fix some documentation bugs for TupleSections Sat Oct 2 11:42:58 EDT 2010 Max Bolingbroke * Fix a validate failure due to Werror (not introduced by me) Sat Oct 2 11:44:17 EDT 2010 Max Bolingbroke * Fix a validate failure due to Werror (not introduced by me) #2 Sat Oct 2 11:45:45 EDT 2010 Max Bolingbroke * Fix a validate failure due to Werror - this time it's my fault New patches: [Implement and document the Haskell' lambda-case feature Max Bolingbroke **20101002143959 Ignore-this: b63e963f9f1e62d14d6de1c0517a22ba ] { hunk ./compiler/deSugar/Coverage.lhs 283 (addTickLHsExpr e2) addTickHsExpr (ExplicitTuple es boxity) = liftM2 ExplicitTuple - (mapM addTickTupArg es) + (mapM (addTickOptExpr addTickLHsExpr) es) (return boxity) addTickHsExpr (HsCase e mgs) = liftM2 HsCase hunk ./compiler/deSugar/Coverage.lhs 287 - (addTickLHsExpr e) + (addTickOptExpr addTickLHsExpr e) (addTickMatchGroup mgs) addTickHsExpr (HsIf e1 e2 e3) = liftM3 HsIf hunk ./compiler/deSugar/Coverage.lhs 291 - (addBinTickLHsExpr (BinBox CondBinBox) e1) + (addTickOptExpr (addBinTickLHsExpr (BinBox CondBinBox)) e1) (addTickLHsExprOptAlt True e2) (addTickLHsExprOptAlt True e3) addTickHsExpr (HsLet binds e) = hunk ./compiler/deSugar/Coverage.lhs 380 -- Others dhould never happen in expression content. addTickHsExpr e = pprPanic "addTickHsExpr" (ppr e) -addTickTupArg :: HsTupArg Id -> TM (HsTupArg Id) -addTickTupArg (Present e) = do { e' <- addTickLHsExpr e; return (Present e') } -addTickTupArg (Missing ty) = return (Missing ty) +addTickOptExpr :: (LHsExpr Id -> TM (LHsExpr Id)) -> HsOptExpr Id -> TM (HsOptExpr Id) +addTickOptExpr addTick (Present e) = do { e' <- addTick e; return (Present e') } +addTickOptExpr _ (Missing ty) = return (Missing ty) addTickMatchGroup :: MatchGroup Id -> TM (MatchGroup Id) addTickMatchGroup (MatchGroup matches ty) = do hunk ./compiler/deSugar/DsArrows.lhs 407 -- if e then Left ((xs1)*ts) else Right ((xs2)*ts)) >>> -- c1 ||| c2 -dsCmd ids local_vars env_ids stack res_ty (HsIf cond then_cmd else_cmd) = do +dsCmd _ _ _ _ _ e@(HsIf (Missing _) _ _) + = panic "Combination of lambda-if and arrows should have been rejected by the type checker" +dsCmd ids local_vars env_ids stack res_ty (HsIf (Present cond) then_cmd else_cmd) = do core_cond <- dsLExpr cond (core_then, fvs_then, then_ids) <- dsfixCmd ids local_vars stack res_ty then_cmd (core_else, fvs_else, else_ids) <- dsfixCmd ids local_vars stack res_ty else_cmd hunk ./compiler/deSugar/DsExpr.lhs 281 Lam x_id (mkCoreAppsDs core_op [Var x_id, Var y_id])) dsExpr (ExplicitTuple tup_args boxity) - = do { let go (lam_vars, args) (Missing ty) - -- For every missing expression, we need - -- another lambda in the desugaring. - = do { lam_var <- newSysLocalDs ty - ; return (lam_var : lam_vars, Var lam_var : args) } - go (lam_vars, args) (Present expr) - -- Expressions that are present don't generate - -- lambdas, just arguments. - = do { core_expr <- dsLExpr expr - ; return (lam_vars, core_expr : args) } + = do { let go (lam_vars, args) tup_arg + = do { (mb_lam_var, core_expr) <- dsOptExpr tup_arg + ; return (maybe id (:) mb_lam_var lam_vars, core_expr : args) } ; (lam_vars, args) <- foldM go ([], []) (reverse tup_args) -- The reverse is because foldM goes left-to-right hunk ./compiler/deSugar/DsExpr.lhs 305 mkErrorAppDs pAT_ERROR_ID (funResultTy rhs_ty) (ptext (sLit "case")) | otherwise - = do { core_discrim <- dsLExpr discrim + = do { (mb_lam_var, core_discrim) <- dsOptExpr discrim ; ([discrim_var], matching_code) <- matchWrapper CaseAlt matches hunk ./compiler/deSugar/DsExpr.lhs 307 - ; return (scrungleMatch discrim_var core_discrim matching_code) } + ; return $ maybe id Lam mb_lam_var $ scrungleMatch discrim_var core_discrim matching_code } -- Pepe: The binds are in scope in the body but NOT in the binding group -- This is to avoid silliness in breakpoints hunk ./compiler/deSugar/DsExpr.lhs 342 [elt_ty] = tcTyConAppArgs result_ty dsExpr (HsIf guard_expr then_expr else_expr) - = mkIfThenElse <$> dsLExpr guard_expr <*> dsLExpr then_expr <*> dsLExpr else_expr + = do { (mb_lam_var, guard_core_expr) <- dsOptExpr guard_expr + ; fmap (maybe id Lam mb_lam_var) $ + (mkIfThenElse guard_core_expr) <$> dsLExpr then_expr + <*> dsLExpr else_expr } \end{code} hunk ./compiler/deSugar/DsExpr.lhs 606 , lbl == idName (unLoc id) ] \end{code} +\begin{code} +dsOptExpr :: HsOptExpr Id -> DsM (Maybe Var, CoreExpr) +dsOptExpr (Present expr) = do + -- Expressions that are present don't generate + -- lambdas, just arguments. + core_expr <- dsLExpr expr + return (Nothing, core_expr) +dsOptExpr (Missing ty) = do + -- For every missing expression, we need + -- another lambda in the desugaring. + lam_var <- newSysLocalDs ty + return (Just lam_var, Var lam_var) +\end{code} + %-------------------------------------------------------------------- Note [Desugaring explicit lists] hunk ./compiler/deSugar/DsMeta.hs 705 repE (HsPar x) = repLE x repE (SectionL x y) = do { a <- repLE x; b <- repLE y; repSectionL a b } repE (SectionR x y) = do { a <- repLE x; b <- repLE y; repSectionR a b } -repE (HsCase e (MatchGroup ms _)) = do { arg <- repLE e +repE e@(HsCase (Missing _) _) = notHandled "Lambda case" (ppr e) +repE (HsCase (Present e) (MatchGroup ms _)) + = do { arg <- repLE e ; ms2 <- mapM repMatchTup ms ; repCaseE arg (nonEmptyCoreList ms2) } hunk ./compiler/deSugar/DsMeta.hs 710 -repE (HsIf x y z) = do +repE e@(HsIf (Missing _) _ _) = notHandled "Lambda if" (ppr e) +repE (HsIf (Present x) y z) = do a <- repLE x b <- repLE y c <- repLE z hunk ./compiler/deSugar/DsMeta.hs 743 repE (ExplicitList _ es) = do { xs <- repLEs es; repListExp xs } repE e@(ExplicitPArr _ _) = notHandled "Parallel arrays" (ppr e) repE e@(ExplicitTuple es boxed) - | not (isBoxed boxed) = notHandled "Unboxed tuples" (ppr e) - | not (all tupArgPresent es) = notHandled "Tuple sections" (ppr e) - | otherwise = do { xs <- repLEs [e | Present e <- es]; repTup xs } + | not (isBoxed boxed) = notHandled "Unboxed tuples" (ppr e) + | not (all optExprPresent es) = notHandled "Tuple sections" (ppr e) + | otherwise = do { xs <- repLEs [e | Present e <- es]; repTup xs } repE (RecordCon c _ flds) = do { x <- lookupLOcc c; hunk ./compiler/deSugar/Match.lhs 904 exp (ExplicitTuple es1 _) (ExplicitTuple es2 _) = eq_list tup_arg es1 es2 exp (HsIf e e1 e2) (HsIf e' e1' e2') = - lexp e e' && lexp e1 e1' && lexp e2 e2' + tup_arg e e' && lexp e1 e1' && lexp e2 e2' -- Enhancement: could implement equality for more expressions -- if it seems useful hunk ./compiler/hsSyn/Convert.lhs 467 cvt (TupE [e]) = cvt e -- Singleton tuples treated like nothing (just parens) cvt (TupE es) = do { es' <- mapM cvtl es; return $ ExplicitTuple (map Present es') Boxed } cvt (CondE x y z) = do { x' <- cvtl x; y' <- cvtl y; z' <- cvtl z - ; return $ HsIf x' y' z' } + ; return $ HsIf (Present x') y' z' } cvt (LetE ds e) = do { ds' <- cvtLocalDecs (ptext (sLit "a let expression")) ds ; e' <- cvtl e; return $ HsLet ds' e' } cvt (CaseE e ms) hunk ./compiler/hsSyn/Convert.lhs 473 | null ms = failWith (ptext (sLit "Case expression with no alternatives")) | otherwise = do { e' <- cvtl e; ms' <- mapM cvtMatch ms - ; return $ HsCase e' (mkMatchGroup ms') } + ; return $ HsCase (Present e') (mkMatchGroup ms') } cvt (DoE ss) = cvtHsDo DoExpr ss cvt (CompE ss) = cvtHsDo ListComp ss cvt (ArithSeqE dd) = do { dd' <- cvtDD dd; return $ ArithSeq noPostTcExpr dd' } hunk ./compiler/hsSyn/HsExpr.lhs 129 (LHsExpr id) -- operand | ExplicitTuple -- Used for explicit tuples and sections thereof - [HsTupArg id] + [HsOptExpr id] Boxity hunk ./compiler/hsSyn/HsExpr.lhs 132 - | HsCase (LHsExpr id) + | HsCase (HsOptExpr id) (MatchGroup id) hunk ./compiler/hsSyn/HsExpr.lhs 135 - | HsIf (LHsExpr id) -- predicate + | HsIf (HsOptExpr id) -- predicate (LHsExpr id) -- then part (LHsExpr id) -- else part hunk ./compiler/hsSyn/HsExpr.lhs 284 (HsExpr id) deriving (Data, Typeable) --- HsTupArg is used for tuple sections +-- HsOptExpr is used for tuple sections and lambda-case/lambda-if -- (,a,) is represented by ExplicitTuple [Mising ty1, Present a, Missing ty3] -- Which in turn stands for (\x:ty1 \y:ty2. (x,a,y)) hunk ./compiler/hsSyn/HsExpr.lhs 287 -data HsTupArg id +-- if then e1 e2 is represented by HsIf (Missing ty1) e1 e2 +-- Which in turn stands for (\x:ty1. if x then e1 else e2) +data HsOptExpr id = Present (LHsExpr id) -- The argument | Missing PostTcType -- The argument is missing, but this is its type deriving (Data, Typeable) hunk ./compiler/hsSyn/HsExpr.lhs 294 -tupArgPresent :: HsTupArg id -> Bool -tupArgPresent (Present {}) = True -tupArgPresent (Missing {}) = False +optExprPresent :: HsOptExpr id -> Bool +optExprPresent (Present {}) = True +optExprPresent (Missing {}) = False type PendingSplice = (Name, LHsExpr Id) -- Typechecked splices, waiting to be -- pasted back in by the desugarer hunk ./compiler/hsSyn/HsExpr.lhs 415 where idType :: HsExpr id -> HsMatchContext id; idType = undefined ppr_expr exprType@(HsCase expr matches) - = sep [ sep [ptext (sLit "case"), nest 4 (ppr expr), ptext (sLit "of {")], + = sep [ sep [ptext (sLit "case"), case expr of Present expr -> nest 4 (ppr expr); Missing _ -> empty, ptext (sLit "of {")], nest 2 (pprMatches (CaseAlt `asTypeOf` idType exprType) matches <+> char '}') ] where idType :: HsExpr id -> HsMatchContext id; idType = undefined hunk ./compiler/hsSyn/HsExpr.lhs 420 ppr_expr (HsIf e1 e2 e3) - = sep [hsep [ptext (sLit "if"), nest 2 (ppr e1), ptext (sLit "then")], + = sep [hsep [ptext (sLit "if"), case e1 of Present e1 -> nest 2 (ppr e1); Missing _ -> empty, ptext (sLit "then")], nest 4 (ppr e2), ptext (sLit "else"), nest 4 (ppr e3)] hunk ./compiler/hsSyn/HsExpr.lhs 620 | HsPar (HsCmd id) -- parenthesised command - | HsCase (HsExpr id) + | HsCase (HsOptExpr id) -- must be Present [Match id] -- bodies are HsCmd's SrcLoc hunk ./compiler/hsSyn/HsExpr.lhs 624 - | HsIf (HsExpr id) -- predicate + | HsIf (HsOptExpr id) -- predicate, must be Present (HsCmd id) -- then part (HsCmd id) -- else part SrcLoc hunk ./compiler/hsSyn/HsUtils.lhs 28 nlHsTyApp, nlHsVar, nlHsLit, nlHsApp, nlHsApps, nlHsIntLit, nlHsVarApps, nlHsDo, nlHsOpApp, nlHsLam, nlHsPar, nlHsIf, nlHsCase, nlList, - mkLHsTupleExpr, mkLHsVarTuple, missingTupArg, + mkLHsTupleExpr, mkLHsVarTuple, missingOptExpr, -- Bindigns mkFunBind, mkVarBind, mkHsVarBind, mk_easy_FunBind, hunk ./compiler/hsSyn/HsUtils.lhs 332 nlHsLam match = noLoc (HsLam (mkMatchGroup [match])) nlHsPar e = noLoc (HsPar e) -nlHsIf cond true false = noLoc (HsIf cond true false) -nlHsCase expr matches = noLoc (HsCase expr (mkMatchGroup matches)) +nlHsIf cond true false = noLoc (HsIf (Present cond) true false) +nlHsCase expr matches = noLoc (HsCase (Present expr) (mkMatchGroup matches)) nlList exprs = noLoc (ExplicitList placeHolderType exprs) nlHsAppTy :: LHsType name -> LHsType name -> LHsType name hunk ./compiler/hsSyn/HsUtils.lhs 363 nlTuplePat :: [LPat id] -> Boxity -> LPat id nlTuplePat pats box = noLoc (TuplePat pats box placeHolderType) -missingTupArg :: HsTupArg a -missingTupArg = Missing placeHolderType +missingOptExpr :: HsOptExpr a +missingOptExpr = Missing placeHolderType \end{code} %************************************************************************ hunk ./compiler/main/DynFlags.hs 352 | Opt_DoRec | Opt_PostfixOperators | Opt_TupleSections + | Opt_LambdaCase | Opt_PatternGuards | Opt_LiberalTypeSynonyms | Opt_Rank2Types hunk ./compiler/main/DynFlags.hs 1556 ( "CPP", Opt_Cpp, nop ), ( "PostfixOperators", Opt_PostfixOperators, nop ), ( "TupleSections", Opt_TupleSections, nop ), + ( "LambdaCase", Opt_LambdaCase, nop ), ( "PatternGuards", Opt_PatternGuards, nop ), ( "UnicodeSyntax", Opt_UnicodeSyntax, nop ), ( "MagicHash", Opt_MagicHash, nop ), hunk ./compiler/parser/Parser.y.pp 1276 (unguardedGRHSs $6) ]) } | 'let' binds 'in' exp { LL $ HsLet (unLoc $2) $4 } - | 'if' exp optSemi 'then' exp optSemi 'else' exp - {% checkDoAndIfThenElse $2 $3 $5 $6 $8 >> + | 'if' optexp optSemi 'then' exp optSemi 'else' exp + {% checkDoAndIfThenElse (comb2 $1 $>) $2 $3 $5 $6 $8 >> return (LL $ HsIf $2 $5 $8) } hunk ./compiler/parser/Parser.y.pp 1279 - | 'case' exp 'of' altslist { LL $ HsCase $2 (mkMatchGroup (unLoc $4)) } + | 'case' optexp 'of' altslist { LL $ HsCase $2 (mkMatchGroup (unLoc $4)) } | '-' fexp { LL $ NegApp $2 noSyntaxExpr } | 'do' stmtlist {% let loc = comb2 $1 $2 in hunk ./compiler/parser/Parser.y.pp 1305 -- hdaume: core annotation | fexp { $1 } +optexp :: { HsOptExpr RdrName } + : exp { Present $1 } + | {- empty -} { missingOptExpr } + optSemi :: { Bool } : ';' { True } | {- empty -} { False } hunk ./compiler/parser/Parser.y.pp 1439 | exp '->' texp { LL $ EViewPat $1 $3 } -- Always at least one comma -tup_exprs :: { [HsTupArg RdrName] } +tup_exprs :: { [HsOptExpr RdrName] } : texp commas_tup_tail { Present $1 : $2 } hunk ./compiler/parser/Parser.y.pp 1441 - | commas tup_tail { replicate $1 missingTupArg ++ $2 } + | commas tup_tail { replicate $1 missingOptExpr ++ $2 } -- Always starts with commas; always follows an expr hunk ./compiler/parser/Parser.y.pp 1444 -commas_tup_tail :: { [HsTupArg RdrName] } -commas_tup_tail : commas tup_tail { replicate ($1-1) missingTupArg ++ $2 } +commas_tup_tail :: { [HsOptExpr RdrName] } +commas_tup_tail : commas tup_tail { replicate ($1-1) missingOptExpr ++ $2 } -- Always follows a comma hunk ./compiler/parser/Parser.y.pp 1448 -tup_tail :: { [HsTupArg RdrName] } +tup_tail :: { [HsOptExpr RdrName] } : texp commas_tup_tail { Present $1 : $2 } | texp { [Present $1] } hunk ./compiler/parser/Parser.y.pp 1451 - | {- empty -} { [missingTupArg] } + | {- empty -} { [missingOptExpr] } ----------------------------------------------------------------------------- -- List expressions hunk ./compiler/parser/RdrHsSyn.lhs 727 return (PArrPat ps placeHolderType) ExplicitTuple es b - | all tupArgPresent es -> do ps <- mapM checkLPat [e | Present e <- es] - return (TuplePat ps b placeHolderType) + | all optExprPresent es -> do ps <- mapM checkLPat [e | Present e <- es] + return (TuplePat ps b placeHolderType) | otherwise -> parseErrorSDoc loc (text "Illegal tuple section in pattern:" $$ ppr e0) RecordCon c _ (HsRecFields fs dd) hunk ./compiler/parser/RdrHsSyn.lhs 827 foreign_RDR = mkUnqual varName (fsLit "foreign") -checkDoAndIfThenElse :: LHsExpr RdrName +checkDoAndIfThenElse :: SrcSpan + -> HsOptExpr RdrName -> Bool -> LHsExpr RdrName -> Bool hunk ./compiler/parser/RdrHsSyn.lhs 834 -> LHsExpr RdrName -> P () -checkDoAndIfThenElse guardExpr semiThen thenExpr semiElse elseExpr +checkDoAndIfThenElse loc guardExpr semiThen thenExpr semiElse elseExpr | semiThen || semiElse = do pState <- getPState unless (xopt Opt_DoAndIfThenElse (dflags pState)) $ do hunk ./compiler/parser/RdrHsSyn.lhs 838 - parseErrorSDoc (combineLocs guardExpr elseExpr) + parseErrorSDoc loc (text "Unexpected semi-colons in conditional:" $$ nest 4 expr $$ text "Perhaps you meant to use -XDoAndIfThenElse?") hunk ./compiler/parser/RdrHsSyn.lhs 845 | otherwise = return () where pprOptSemi True = semi pprOptSemi False = empty - expr = text "if" <+> ppr guardExpr <> pprOptSemi semiThen <+> + guardDoc = case guardExpr of Present guardExpr -> ppr guardExpr + Missing _ -> empty + expr = text "if" <+> guardDoc <> pprOptSemi semiThen <+> text "then" <+> ppr thenExpr <> pprOptSemi semiElse <+> text "else" <+> ppr elseExpr \end{code} hunk ./compiler/rename/RnExpr.lhs 214 return (HsLam matches', fvMatch) rnExpr (HsCase expr matches) - = rnLExpr expr `thenM` \ (new_expr, e_fvs) -> - rnMatchGroup CaseAlt matches `thenM` \ (new_matches, ms_fvs) -> - return (HsCase new_expr new_matches, e_fvs `plusFV` ms_fvs) + = do { checkLambdaCase (ptext (sLit "lambda-case")) expr + ; (new_expr, e_fvs) <- rnOptExpr expr + ; (new_matches, ms_fvs) <- rnMatchGroup CaseAlt matches + ; return (HsCase new_expr new_matches, e_fvs `plusFV` ms_fvs) } rnExpr (HsLet binds expr) = rnLocalBindsAndThen binds $ \ binds' -> hunk ./compiler/rename/RnExpr.lhs 240 rnExpr (ExplicitTuple tup_args boxity) = do { checkTupleSection tup_args ; checkTupSize (length tup_args) - ; (tup_args', fvs) <- mapAndUnzipM rnTupArg tup_args + ; (tup_args', fvs) <- mapAndUnzipM rnOptExpr tup_args ; return (ExplicitTuple tup_args' boxity, plusFVs fvs) } hunk ./compiler/rename/RnExpr.lhs 242 - where - rnTupArg (Present e) = do { (e',fvs) <- rnLExpr e; return (Present e', fvs) } - rnTupArg (Missing _) = return (Missing placeHolderType, emptyFVs) rnExpr (RecordCon con_id _ rbinds) = do { conname <- lookupLocatedOccRn con_id hunk ./compiler/rename/RnExpr.lhs 264 doc = text "In an expression type signature" rnExpr (HsIf p b1 b2) - = rnLExpr p `thenM` \ (p', fvP) -> - rnLExpr b1 `thenM` \ (b1', fvB1) -> - rnLExpr b2 `thenM` \ (b2', fvB2) -> - return (HsIf p' b1' b2', plusFVs [fvP, fvB1, fvB2]) + = do { checkLambdaCase (ptext (sLit "lambda-if")) p + ; (p', fvP) <- rnOptExpr p + ; (b1', fvB1) <- rnLExpr b1 + ; (b2', fvB2) <- rnLExpr b2 + ; return (HsIf p' b1' b2', plusFVs [fvP, fvB1, fvB2]) } rnExpr (HsType a) = rnHsTypeFVs doc a `thenM` \ (t, fvT) -> hunk ./compiler/rename/RnExpr.lhs 343 rnExpr other = pprPanic "rnExpr: unexpected expression" (ppr other) -- HsWrap +rnOptExpr :: HsOptExpr RdrName -> RnM (HsOptExpr Name, FreeVars) +rnOptExpr (Present e) = do { (e',fvs) <- rnLExpr e; return (Present e', fvs) } +rnOptExpr (Missing _) = return (Missing placeHolderType, emptyFVs) + + ---------------------- -- See Note [Parsing sections] in Parser.y.pp rnSection :: HsExpr RdrName -> RnM (HsExpr Name, FreeVars) hunk ./compiler/rename/RnExpr.lhs 1203 msg = ptext (sLit "Illegal transform or grouping in") <+> pprStmtContext ctxt --------- -checkTupleSection :: [HsTupArg RdrName] -> RnM () +checkLambdaCase :: SDoc -> HsOptExpr RdrName -> RnM () +checkLambdaCase violation scrut = do + lambda_case <- xoptM Opt_LambdaCase + checkErr (optExprPresent scrut || lambda_case) msg + where + msg = ptext (sLit "Illegal") <+> violation <> ptext (sLit ": use -XLambdaCase") + +--------- +checkTupleSection :: [HsOptExpr RdrName] -> RnM () checkTupleSection args = do { tuple_section <- xoptM Opt_TupleSections hunk ./compiler/rename/RnExpr.lhs 1214 - ; checkErr (all tupArgPresent args || tuple_section) msg } + ; checkErr (all optExprPresent args || tuple_section) msg } where msg = ptext (sLit "Illegal tuple section: use -XTupleSections") hunk ./compiler/typecheck/TcArrows.lhs 120 tc_cmd env in_cmd@(HsCase scrut matches) (stk, res_ty) = addErrCtxt (cmdCtxt in_cmd) $ do - (scrut', scrut_ty) <- tcInferRho scrut + (scrut', scrut_ty) <- case scrut of + Present scrut -> tcInferRho scrut + Missing _ -> failWith (ptext (sLit "Unsupported combination of lambda-case and arrows")) matches' <- tcMatchesCase match_ctxt scrut_ty matches res_ty hunk ./compiler/typecheck/TcArrows.lhs 124 - return (HsCase scrut' matches') + return (HsCase (Present scrut') matches') where match_ctxt = MC { mc_what = CaseAlt, mc_body = mc_body } hunk ./compiler/typecheck/TcArrows.lhs 131 mc_body body res_ty' = tcGuardedCmd env body stk res_ty' tc_cmd env (HsIf pred b1 b2) res_ty - = do { pred' <- tcMonoExpr pred boolTy + = do { pred' <- case pred of + Present pred -> tcMonoExpr pred boolTy + Missing _ -> failWith (ptext (sLit "Unsupported combination of lambda-if and arrows")) ; b1' <- tcCmd env b1 res_ty ; b2' <- tcCmd env b2 res_ty hunk ./compiler/typecheck/TcArrows.lhs 136 - ; return (HsIf pred' b1' b2') + ; return (HsIf (Present pred') b1' b2') } ------------------------------------------- hunk ./compiler/typecheck/TcExpr.lhs 324 SectionL arg1' (mkLHsWrapCoI co_fn op') } tcExpr (ExplicitTuple tup_args boxity) res_ty - | all tupArgPresent tup_args + | all optExprPresent tup_args = do { let tup_tc = tupleTyCon boxity (length tup_args) ; (coi, arg_tys) <- matchExpectedTyConApp tup_tc res_ty ; tup_args1 <- tcTupArgs tup_args arg_tys hunk ./compiler/typecheck/TcExpr.lhs 376 tcMonoExpr expr res_ty ; return (HsLet binds' expr') } -tcExpr (HsCase scrut matches) exp_ty +tcExpr e@(HsCase scrut matches) res_ty = do { -- We used to typecheck the case alternatives first. -- The case patterns tend to give good type info to use -- when typechecking the scrutinee. For example hunk ./compiler/typecheck/TcExpr.lhs 386 -- -- But now, in the GADT world, we need to typecheck the scrutinee -- first, to get type info that may be refined in the case alternatives - (scrut', scrut_ty) <- tcInferRho scrut - + ; (coi, body_ty, scrut', scrut_ty) <- case scrut of + Missing _ -> do + (co_fn, [arg_ty], body_ty) <- matchExpectedFunTys (mk_lam_case_msg e) 1 res_ty + return (co_fn, body_ty, Missing arg_ty, arg_ty) + Present scrut -> do + (scrut', scrut_ty) <- tcInferRho scrut + return (IdCo res_ty, res_ty, Present scrut', scrut_ty) ; traceTc "HsCase" (ppr scrut_ty) hunk ./compiler/typecheck/TcExpr.lhs 394 - ; matches' <- tcMatchesCase match_ctxt scrut_ty matches exp_ty - ; return (HsCase scrut' matches') } + ; matches' <- tcMatchesCase match_ctxt scrut_ty matches body_ty + ; return $ mkHsWrapCoI coi $ HsCase scrut' matches' } where match_ctxt = MC { mc_what = CaseAlt, mc_body = tcBody } hunk ./compiler/typecheck/TcExpr.lhs 400 -tcExpr (HsIf pred b1 b2) res_ty - = do { pred' <- tcMonoExpr pred boolTy - ; b1' <- tcMonoExpr b1 res_ty - ; b2' <- tcMonoExpr b2 res_ty - ; return (HsIf pred' b1' b2') } +tcExpr e@(HsIf pred b1 b2) res_ty + = do { (coi, pred', body_ty) <- case pred of + Missing _ -> do + (co_fn1, [arg_ty], body_ty) <- matchExpectedFunTys (mk_lam_case_msg e) 1 res_ty + co_arg <- unifyType boolTy arg_ty + let -- co_fn1 :: (arg_ty -> body_ty) ~ res_ty + -- co_arg :: Bool ~ arg_ty + -- co_fn2 :: (Bool -> body_ty) ~ (arg_ty -> body_ty) + -- co_fn :: (Bool -> body_ty) ~ res_ty + co_fn2 = co_arg `mkFunTyCoI` IdCo body_ty + co_fn = co_fn2 `mkTransCoI` co_fn1 + -- TODO: constructing this coercion is smelly. Is there a better way? + return (co_fn, Missing boolTy, body_ty) + Present pred -> do + pred' <- tcMonoExpr pred boolTy + return (IdCo boolTy, Present pred', res_ty) + ; b1' <- tcMonoExpr b1 body_ty + ; b2' <- tcMonoExpr b2 body_ty + ; return $ mkHsWrapCoI coi $ HsIf pred' b1' b2' } tcExpr (HsDo do_or_lc stmts body _) res_ty = tcDoStmts do_or_lc stmts body res_ty hunk ./compiler/typecheck/TcExpr.lhs 825 mk_app_msg fun = sep [ ptext (sLit "The function") <+> quotes (ppr fun) , ptext (sLit "is applied to")] +mk_lam_case_msg :: HsExpr Name -> SDoc +mk_lam_case_msg fun = sep [ ptext (sLit "The function") <+> quotes (ppr fun) + , ptext (sLit "requires")] + ---------------- tcInferApp :: LHsExpr Name -> [LHsExpr Name] -- Function and args -> TcM (HsExpr TcId, TcRhoType) -- Translated fun and args hunk ./compiler/typecheck/TcExpr.lhs 881 (tcPolyExprNC arg ty) ---------------- -tcTupArgs :: [HsTupArg Name] -> [TcSigmaType] -> TcM [HsTupArg TcId] +tcTupArgs :: [HsOptExpr Name] -> [TcSigmaType] -> TcM [HsOptExpr TcId] tcTupArgs args tys hunk ./compiler/typecheck/TcExpr.lhs 883 - = ASSERT( equalLength args tys ) mapM go (args `zip` tys) - where - go (Missing {}, arg_ty) = return (Missing arg_ty) - go (Present expr, arg_ty) = do { expr' <- tcPolyExpr expr arg_ty - ; return (Present expr') } + = ASSERT( equalLength args tys ) mapM (uncurry tcTupArg) (args `zip` tys) + +tcTupArg :: HsOptExpr Name -> TcSigmaType -> TcM (HsOptExpr TcId) +tcTupArg (Missing {}) arg_ty = return (Missing arg_ty) +tcTupArg (Present expr) arg_ty = do { expr' <- tcPolyExpr expr arg_ty + ; return (Present expr') } ---------------- unifyOpFunTys :: LHsExpr Name -> Arity -> TcRhoType hunk ./compiler/typecheck/TcHsSyn.lhs 551 returnM (SectionR new_op new_expr) zonkExpr env (ExplicitTuple tup_args boxed) - = do { new_tup_args <- mapM zonk_tup_arg tup_args + = do { new_tup_args <- mapM (zonkOptExpr env) tup_args ; return (ExplicitTuple new_tup_args boxed) } hunk ./compiler/typecheck/TcHsSyn.lhs 553 - where - zonk_tup_arg (Present e) = do { e' <- zonkLExpr env e; return (Present e') } - zonk_tup_arg (Missing t) = do { t' <- zonkTcTypeToType env t; return (Missing t') } zonkExpr env (HsCase expr ms) hunk ./compiler/typecheck/TcHsSyn.lhs 555 - = zonkLExpr env expr `thenM` \ new_expr -> + = zonkOptExpr env expr `thenM` \ new_expr -> zonkMatchGroup env ms `thenM` \ new_ms -> returnM (HsCase new_expr new_ms) hunk ./compiler/typecheck/TcHsSyn.lhs 560 zonkExpr env (HsIf e1 e2 e3) - = zonkLExpr env e1 `thenM` \ new_e1 -> + = zonkOptExpr env e1 `thenM` \ new_e1 -> zonkLExpr env e2 `thenM` \ new_e2 -> zonkLExpr env e3 `thenM` \ new_e3 -> returnM (HsIf new_e1 new_e2 new_e3) hunk ./compiler/typecheck/TcHsSyn.lhs 652 zonkExpr _ expr = pprPanic "zonkExpr" (ppr expr) +zonkOptExpr :: ZonkEnv -> HsOptExpr TcId -> TcM (HsOptExpr Id) +zonkOptExpr env (Present e) = do { e' <- zonkLExpr env e; return (Present e') } +zonkOptExpr env (Missing t) = do { t' <- zonkTcTypeToType env t; return (Missing t') } + zonkCmdTop :: ZonkEnv -> LHsCmdTop TcId -> TcM (LHsCmdTop Id) zonkCmdTop env cmd = wrapLocM (zonk_cmd_top env) cmd hunk ./compiler/types/Generics.lhs 313 mk_sum_stuff us datacons = (wrap inlDataCon_RDR l_from_alts ++ wrap inrDataCon_RDR r_from_alts, nlVarPat to_arg, - noLoc (HsCase (nlHsVar to_arg) - (mkMatchGroup [mkSimpleHsAlt (nlConPat inlDataCon_RDR [l_to_pat]) l_to_body, - mkSimpleHsAlt (nlConPat inrDataCon_RDR [r_to_pat]) r_to_body]))) + nlHsCase (nlHsVar to_arg) [mkSimpleHsAlt (nlConPat inlDataCon_RDR [l_to_pat]) l_to_body, + mkSimpleHsAlt (nlConPat inrDataCon_RDR [r_to_pat]) r_to_body]) where (l_datacons, r_datacons) = splitInHalf datacons (l_from_alts, l_to_pat, l_to_body) = mk_sum_stuff us' l_datacons hunk ./compiler/types/Generics.lhs 373 nlHsApps crossDataCon_RDR [l_alt_rhs, r_alt_rhs], nlVarPat to_arg, -- gaw 2004 FIX? - \x -> noLoc (HsCase (nlHsVar to_arg) - (mkMatchGroup [mkSimpleHsAlt pat (l_to_body_fn (r_to_body_fn x))]))) + \x -> nlHsCase (nlHsVar to_arg) [mkSimpleHsAlt pat (l_to_body_fn (r_to_body_fn x))]) where to_arg = mkGenericLocal us (l_arg_vars, r_arg_vars) = splitInHalf arg_vars hunk ./docs/users_guide/flags.xml 963 + + Enable lambda-case and lambda-if. + dynamic + + + Enable standalone deriving. dynamic hunk ./docs/users_guide/glasgow_exts.xml 1399 + +Lambda-case and lambda-if + + + The flag enables point-free versions of the + if and case statements. For example, the following program + + if then 1 else 2 + + is considered to be an alternative notation for the more unwieldy alternative + + \x -> if x then 1 else 2 + +Likewise, you can write + + case of 1 -> True; 2 -> False + +which translates to + + \x -> case x of 1 -> True; 2 -> False + + + + + Record field disambiguation } [Fix some documentation bugs for TupleSections Max Bolingbroke **20101002144550 Ignore-this: fdb6c096b331a4e095aa505252b1f8cd ] { hunk ./docs/users_guide/flags.xml 963 + + Enable tuple sections. + dynamic + + + Enable lambda-case and lambda-if. dynamic hunk ./docs/users_guide/glasgow_exts.xml 1365 Tuple sections - The flag enables Python-style partially applied + The flag enables partially applied tuple constructors. For example, the following program (, True) } [Fix a validate failure due to Werror (not introduced by me) Max Bolingbroke **20101002154258 Ignore-this: d46da031c2bc18797e6c500414c90f61 ] hunk ./compiler/typecheck/Inst.lhs 40 import TcHsSyn import TcRnMonad import TcEnv -import TcRnTypes import InstEnv import FunDeps import TcMType [Fix a validate failure due to Werror (not introduced by me) #2 Max Bolingbroke **20101002154417 Ignore-this: a5161af3d8945dcc4e86f5e8ac6777f0 ] hunk ./compiler/typecheck/TcSMonad.lhs 100 import TcRnTypes -import Control.Monad import Data.IORef \end{code} [Fix a validate failure due to Werror - this time it's my fault Max Bolingbroke **20101002154545 Ignore-this: e18d97763a8c364dd4b3e2fcb5accbd1 ] hunk ./compiler/deSugar/DsArrows.lhs 407 -- if e then Left ((xs1)*ts) else Right ((xs2)*ts)) >>> -- c1 ||| c2 -dsCmd _ _ _ _ _ e@(HsIf (Missing _) _ _) +dsCmd _ _ _ _ _ (HsIf (Missing _) _ _) = panic "Combination of lambda-if and arrows should have been rejected by the type checker" dsCmd ids local_vars env_ids stack res_ty (HsIf (Present cond) then_cmd else_cmd) = do core_cond <- dsLExpr cond Context: [make test and fulltest targets in the main Makefile; fixes #4297 Ian Lynagh **20100930224741 You can now run "make test" in the root, and the fast testsuite will be run with cleaning enabled. It will also put the summary in testsuite_summary.txt. ] [Don't show the loaded packages in ":show packages"; fixes #4300 Ian Lynagh **20100930210128 It's never worked properly, and the information is in ":show linker". ] [Handle EXTRA_LIBRARIES when building programs Ian Lynagh **20100930192552 Ignore-this: 401a26e18d25dcaee010b13eaed8f011 And set hp2ps's EXTRA_LIBRARIES. Based on a patch from Sergei Trofimovich. ] [Fix the doc directory on Windows Ian Lynagh **20100929133328] [Remove an unused import on Windows Ian Lynagh **20100929000024 Ignore-this: 2899e0e5a47122e637fb5c8aa0df52ab ] [Use showCommandForUser when showing tracing commands Ian Lynagh **20100928235844 Ignore-this: 8a4a9c9f8a8029e708c4297b096b6ef1 ] [Fix hsc2hs docs: 'gcc' is now the default compiler, not 'ghc'; fixes #4341 Ian Lynagh **20100928201938] [Use an empty signal handler for SIGPIPE instead of SIG_IGN Simon Marlow **20100925193548 Ignore-this: b4dc5de32740a7c5fd8fe4b3bfb1300f This is so that the SIGPIPE handler gets reset to the default automatically on exec(). ] [Fix the TH deps Ian Lynagh **20100925210029 Ignore-this: 32b832301a3625d4ba70f84c5c4f94d2 ] [Check inplace doesn't exist before we try to create it Ian Lynagh **20100924191858 This fixes rerunning configure in a tree which already has an inplace directory. Edward Z Yang ran into this; I guess whether it actually fails depends on details of your installation, or we'd have run into it sooner. ] [Fix an egregious bug: INLINE pragmas on monomorphic Ids were being ignored simonpj@microsoft.com**20100924155815 Ignore-this: 38c6eec6710a92df7662a55fc5132c15 I had do to some refactoring to make this work nicely but now it does. I can't think how this escaped our attention for so long! ] [Eta expand only lambdas that bind a non-dictionary Id simonpj@microsoft.com**20100924155707 Ignore-this: 7cc265eaf6c0bb3fa12eb311d92594ac See Note [When to eta expand]. The idea is that dictionary lambdas are invisible to the user, so we shouldn't eta expand them. ] [Add a comment simonpj@microsoft.com**20100924155620 Ignore-this: de210a1afdd40328824803e1d77b4d7f ] [Add a debug print simonpj@microsoft.com**20100924155614 Ignore-this: 1a58b6d297fc77d6ded8eec7ea9f895d ] [Just moving comments around simonpj@microsoft.com**20100924155600 Ignore-this: 96635b8e8c9d88b50d82938568152ef8 ] [use putStrLn instead of Haskeline's outputStrLn Simon Marlow **20100924133154 Ignore-this: 7581ae11714a9a52e78ba098c3c216b3 use of the latter caused problems for Claus Reinke's macros that redirect stdout. ] [Change "OPTIONS" to "OPTIONS_GHC" in error messages; fixes #4327 Ian Lynagh **20100924120423 Ignore-this: 1697c83a5c346db640c0a2e22c69ff55 ] [Add deps for TH uses in vector Ian Lynagh **20100923220244 Ignore-this: 54c3386b1c268821fcdd34b84bc8c6a4 ] [Bump Cabal dep Ian Lynagh **20100923143241] [Update Cabal's version number Ian Lynagh **20100923141719] [Build primitive with stage2 Ian Lynagh **20100923140525 Ignore-this: 110a819b78a57629a7edf1d4facdc191 ] [Fix the Windows __chkstk build error (missing Linker symbol) Simon Marlow **20100924113837 Ignore-this: 48f0907bb1bd5eaa0730b94a6bd94ea ] [emit a helpful error message for missing DPH packages Simon Marlow **20100923141957 Ignore-this: 55ff2ee90c94524e023e014243bfe5df ] [Fix computation of installed packages simonpj@microsoft.com**20100924084737 Ignore-this: a597d2fa8be5135ba8ead6d2624b3d71 This is a follow-on to Simon's patch yesterday, developed with him. It cleans up the computation of how packages are installed, and installs the right ones. ] [Fix braino in WwLib/Literal patch simonpj@microsoft.com**20100924070914 Ignore-this: f6eb3a42e10f8aa7920de541cdfe76d8 ] [For now, switch off incomplete-pattern warnings in containers simonpj@microsoft.com**20100923130117 Ignore-this: 7ffa58567f7a33aafe256492999da325 Put it back on when my patch is applied to the containers repo. (the one that removes two refuable lambdas) ] [Make -funfolding-dict-threshold work properly simonpj@microsoft.com**20100923130032 Ignore-this: 417788f5b09d1d624f6b6371852c80c7 and increase its default value. This makes overloaded functions a bit keener to inline. Which fixes Trac #4321 ] [Impredicative types is no longer deprecated simonpj@microsoft.com**20100923125910 Ignore-this: 2bbaeb38b5e8424551677c0add627683 ] [Do not make FunctionalDependencies force MonoLocalBinds simonpj@microsoft.com**20100923125900 Ignore-this: f4ae1fd07c87ec14f60bdfe3863ba7a9 ] [move CHECKED settings to the right place Simon Marlow **20100923123558 Ignore-this: e00a0eb5855463cc9b953670b3bbf211 ] [turn off -Werror for primitive and vector Simon Marlow **20100923122055 Ignore-this: 54d7b80f3f893385e1c3ef431e2a8a7b ] [Add primitive and vector packages for DPH support Simon Marlow **20100923104542 Ignore-this: c070d015385b0a0797394132dcbb7670 DPH is now using the public vector package instead of its internal version. vector and primitive are not "boot" packages; they aren't required to build GHC, but they are required to validate (because we include DPH when validating). If you say './darcs-all get --no-dph' then you don't get DPH, vector, or primitive. ] [Refactoring and tidy up in the build system Simon Marlow **20100923095642 Ignore-this: f7bf3a1fd160149d89b26f464b064fb1 Instead of the ghc-stage and ghc-stage2-package files in a package, we now have a list of these in ghc.mk. There are other similar lists (of boot-packages and non-installable packages), so this is not too bad, and is simpler. While poking around in the top-level ghc.mk file I spotted various opportunities to clean up and re-order some of the cruft that has accumulated over time. ] [Allow absent State# RealWorld arguments simonpj@microsoft.com**20100923111356 Ignore-this: c2d57633dec0293ebe6723ea3a4bb5df ] [Add notSCCNote, and use it simonpj@microsoft.com**20100923105949 Ignore-this: c8cc758656558a7f366bf784d75f0304 The point here is that SCCs get in the way of eta expansion and we must treat them uniformly. ] [Remove use of lambda with a refutable pattern simonpj@microsoft.com**20100923105901 Ignore-this: d7d48b94e5744717a838591a1cc79cf0 ] [Avoid ASSERT black hole simonpj@microsoft.com**20100923105820 Ignore-this: 5419d450871be22c8781ac3f0f40d76a When this ASSERT tripped in CoreToStg it tried to print out too much, which tripped the asssertion again. Result: an infinite loop with no output at all. Hard to debug! ] [Rejig the absent-arg stuff for unlifted types simonpj@microsoft.com**20100923105732 Ignore-this: 69daa35816b948b0c4d259c73a5e928e This is what was giving the "absent entered" messages See Note [Absent errors] in WwLib. We now return a suitable literal for absent values of unlifted type. ] [Remove -fwarn-simple-patterns, and make -fwarn-incomplete-patterns include lambdas simonpj@microsoft.com**20100922133934 Ignore-this: e851a2fb0377e10c28c506f0bf14cc85 This makes \(x:xs) -> e want when you have -fwarn-incomplete-patterns, which is consistent. ] [Get rid of non-exhaustive lambda simonpj@microsoft.com**20100922133801 Ignore-this: 748b2d5b43b02b6591b81abe7c105cd6 ] [Fix an ASSERT failure with profiling simonpj@microsoft.com**20100922133741 Ignore-this: 170b2e94d6ee8cc7444cc4bb515328a0 The problem arose with this kind of thing x = (,) (scc "blah" Nothing) Then 'x' is marked NoCafRefs by CoreTidy, becuase it has arity 1, and doesn't mention any caffy things. That in turns means that CorePrep must not float out the sat binding to give sat = scc "blah" Nothing x = (,) sat Rather we must generate x = \eta. let sat = scc "blah" Nothing in (,) sat eta URGH! This Caf stuff is such a mess. ] [Remove an out of date paragraph from the user guide; fixes #4331 Ian Lynagh **20100922225239] [Fix bindisttest when GhcProfiled = YES Ian Lynagh **20100921222634 Ignore-this: 47c620fd6bec745e3eb699d9f53441d8 ] [Fixes for when HADDOCK_DOCS=NO Ian Lynagh **20100921213916 Ignore-this: e0e069555c6db9d01a8ac70ba4dde591 ] [Bump version to 7.1 Ian Lynagh **20100921195935 Ignore-this: 4563987e6885d5ef55995ec0fa0d5ae8 ] [Don't use -march=i686 on powerpc-apple-darwin Ian Lynagh **20100921193721 Thorikil ran into this when doing a PPC OS X build. We now also don't use -m32 on PPC/OSX, but I don't think it should be necessary. We can add it back if it does turn out to be. ] [add a simple trace facility to the build system Simon Marlow **20100921134729 Ignore-this: d23ea2d62a648d0711b4b07d98e1b79f saying make TRACE=1 prints most of the macro calls and their arguments. It's easy to trace new macros; see rules/trace.mk. ] [fix building with extra packages (packages were added to BUILD_DIRS twice) Simon Marlow **20100921100153 Ignore-this: 4b425dff9777871ad5ba3e05e1d14483 Also add some comments about what extra-packages is doing ] [add extra packages to $(EXTRA_PACKAGES), so we avoid installing them by default Simon Marlow **20100920144307 Ignore-this: 3395825d911a8bf7ba8385518d8b517b ] [Fix indexing error in archive loader Ian Lynagh **20100921121642] [Add some -Dl belches Ian Lynagh **20100921121624] [Add casts to fix warnings Ian Lynagh **20100921121714] [Add support for BSD-variant large filenames in .a archives Ian Lynagh **20100921000451] [Tell Cabal that we're not building GHCi libs if UseArchivesForGhci=YES Ian Lynagh **20100920230449] ["UseArchivesForGhci = YES" on darwin Ian Lynagh **20100920211538] [Add a dependency that my OS X build has recently started tripping up over Ian Lynagh **20100920210239] [Add "Use archives for ghci" to --info output Ian Lynagh **20100920210523] [Implement archive loading for ghci Ian Lynagh **20100920201620] [Tweak gen_contents_index now dph may not be there Ian Lynagh **20100920201513] [Filter out the FFI library when loading package in ghci Ian Lynagh **20100920181032 The FFI GHCi import lib isn't needed as compiler/ghci/Linker.lhs + rts/Linker.c link the interpreted references to FFI to the compiled FFI. We therefore filter it out so that we don't get duplicate symbol errors. ] [Loosen the conditions for -XUndecidableInstances; fixes Trac #4200 simonpj@microsoft.com**20100919162623 Ignore-this: 2f4323e278b1ce9250549727ffd0aa1b ] [Further improvements in error messages simonpj@microsoft.com**20100919153355 Ignore-this: b6fa0b11ae893df1a3ca68f78e427fa ] [Add a flag -fwarn-missing-local-sigs, and improve -fwarn-mising-signatures simonpj@microsoft.com**20100919153327 Ignore-this: fda8dfca450054ea692be0ee30b01885 The new flag prints out a warning if you have a local, polymorphic binding that lacks a type signature. It's meant to help with the transition to the new typechecker, which discourages local let-generalisation. At the same time I moved the missing-signature code to TcHsSyn, where it takes place as part of zonking. That way the types are reported after all typechecking is complete, thereby fixing Trac #3696. (It's even more important for local bindings, which is why I made the change.) ] [Include the "stupid theta" in the type of $con2tag simonpj@microsoft.com**20100919152201 Ignore-this: d95fae78a0e66f48bbd5862573a11f4d ] [Add a release note about the typechecker Ian Lynagh **20100919132927] [Enable shared libs on OpenBSD Matthias Kilian **20100918205040 Ignore-this: 729dd7ac0bba5d758f43bc31b541896 ] [Add separate functions for querying DynFlag and ExtensionFlag options Ian Lynagh **20100918163815 and remove the temporary DOpt class workaround. ] [Fix mkUserGuidePart deps Ian Lynagh **20100918145904 We need to directly depend on the stage1 libs. The stage1 compiler lib doesn't depend on them. ] [Fix build on cygwin: Normalise slashes in .depend files to be / Ian Lynagh **20100918132328 Ignore-this: 664f5ef4a41a4461eb34fe2ca7f2729a ] [extra packages info is now read from packages file Ian Lynagh **20100917224409 rather than being repeated in the build system ] [Tweak darcs-all Ian Lynagh **20100917194435] [Bump dependencies Ian Lynagh **20100917183609] [Library release notes for 7.0.1 Ian Lynagh **20100917174850] [Fix overriding of implicit parameters in the solver simonpj@microsoft.com**20100917140403 Ignore-this: af76732309c7e2ca6b04f49327e9c14b ] [Minor type printing amomaly simonpj@microsoft.com**20100917140204 Ignore-this: c90cb2e51421b4543a827e096051772e ] [Spaces only simonpj@microsoft.com**20100917140156 Ignore-this: 7e34479502f7cb87d762355e40cbd012 ] [Minor refactoring simonpj@microsoft.com**20100917140150 Ignore-this: 6c0648b949b91b7e2f23c136b124faf2 ] [Add types of implicit parameters as untouchable simonpj@microsoft.com**20100917140138 Ignore-this: ba80740a557a9ba062dc7756e2320d17 This is a tricky point: see Note [Implicit parameter untouchables] ] [Better pretty printing of implicit parameters simonpj@microsoft.com**20100917140054 Ignore-this: 867dd67818a5bd687b2b6a1b59e15775 ] [Yet more error message improvement simonpj@microsoft.com**20100917121206 Ignore-this: 647fe8129d1d39d81e8249debd8df94e ] [More error message wibbles simonpj@microsoft.com**20100917094721 Ignore-this: 8ec2f150b96b26af2e9ab7ac2b371fc7 ] [More error refactoring simonpj@microsoft.com**20100917092834 Ignore-this: 2d570ac0b9cc11305ddd33d093d11324 ] [Refactor type errors a bit simonpj@microsoft.com**20100917080726 Ignore-this: 33da4549373f585064e2ee22b50ad6ac Improves kind error messages in paticular ] [Fix a very subtle shadowing bug in optCoercion simonpj@microsoft.com**20100916170452 Ignore-this: 9041cfb3c93e27a5e644e57815313aae See Note [Subtle shadowing in coercions] This is what was going wrong in Trac 4160. ] [Fix bad error in tyVarsOfType simonpj@microsoft.com**20100916170348 Ignore-this: 67c8ce96a668cf6e3a38b82c893bcd81 We weren't gathering the type variables free in the kind of a coercion binder! ] [More assertions simonpj@microsoft.com**20100916170310 Ignore-this: 7fdcb53c99d791621a3d7e01ef454404 ] [Add more location info in CoreLint simonpj@microsoft.com**20100916170229 Ignore-this: 6558bab544b4f30189e0430668db87c3 ] [Print coercion variables as such (debugging change only) simonpj@microsoft.com**20100916165944 Ignore-this: c6d2001c1d8279a2288cb63bc339577d ] [Remove pprTrace simonpj@microsoft.com**20100915225935 Ignore-this: 28185bbfa9732386f3c0f3eb4781a637 ] [Remove dead code dealing with type refinement simonpj@microsoft.com**20100915223230 Ignore-this: 62824b5c2ec1077c7642163352559621 ] [Use mkAppTy simonpj@microsoft.com**20100915223205 Ignore-this: e79e087b6a49219e9088846a1253a153 Using AppTy in CoreLint was giving a bogus Lint failure ] [Comments only simonpj@microsoft.com**20100915221253 Ignore-this: 3a45ea614188ccbb4a462de5cac96eda ] [Extend eta reduction to work with casted arguments simonpj@microsoft.com**20100915221229 Ignore-this: 24b103dcdf70331211507af929789f86 See Trac #4201, and Note [Eta reduction with casted arguments] Thanks to Louis Wasserman for suggesting this, and implementing an early version of the patch ] [Allow "INLINEABLE" as a synonym simonpj@microsoft.com**20100915154249 Ignore-this: f41f80cb769e9acd5b463b170df698d0 ] [Documentation for INLINABLE simonpj@microsoft.com**20100915154235 Ignore-this: f942c02bcadc0d2d2f05b9369f93e280 ] [Implement TH reification of instances (Trac #1835) simonpj@microsoft.com**20100915151242 Ignore-this: 97dfa83db7da8f6cbd1b96801a57f8c5 Accompanying patch for template-haskell package is reqd ] [errno corresponding to ERROR_NO_DATA should be EPIPE (non-threaded RTS) Simon Marlow **20100915141809 Ignore-this: 709c7280fbaa762e7071fb8796e8c01e ] [Windows: use a thread-local variable for myTask() Simon Marlow **20100915120627 Ignore-this: 13ffa4f19ebd319fe672af53af8d0b9a Which entailed fixing an incorrect #ifdef in Task.c ] [Fix typo Ian Lynagh **20100915140814] [Add quotes in error message simonpj@microsoft.com**20100915144724 Ignore-this: c5158047c0aa41947a79e4c8edbe54f4 ] [Fix isDefaultInlinePragma simonpj@microsoft.com**20100915144710 Ignore-this: c9addf6bf811b23dc12603cf8521aa6c ] [Implement INLINABLE pragma simonpj@microsoft.com**20100915124442 Ignore-this: 80a4ab2c2d65b27868dc9b2e954d6c6f Implements Trac #4299. Documentation to come. ] [Less voluminous error when derived code doesn't typecheck simonpj@microsoft.com**20100915072301 Ignore-this: eca7871dcc50c1070a0b530711adea27 ] [Improve pretty-printing of family instances simonpj@microsoft.com**20100915123219 Ignore-this: 25ec6bcc7e8a7f7c303b38ca201db90e Fixed Trac #4246 ] [Fix Trac #4240: -ddump-minimal-imports simonpj@microsoft.com**20100915121937 Ignore-this: ab85057cb829a42ea44a92f7b4af24a3 See Note [Partial export] for the details. I also fixed one egregious bug that was just waiting to bite: we were using loadSysInterface instead of loadSrcInterface. ] [Comments only simonpj@microsoft.com**20100915105707 Ignore-this: ab3a5f16f8260b7b8570e748bf97998a ] [implement setThreadAffinity on Windows (#1741) Simon Marlow **20100914155844 Ignore-this: a14c7b4ef812007042342d0a25478f0b ] [COFF: cope with new debug sections in gcc 4.x (fixes ghciprog004) Simon Marlow **20100914153026 Ignore-this: f340e40a2b0390836bc61bba144a04ed Also updated the object file parser to properly handle the overflow case for section names longer than 8 chars. ] [eliminate clutter from make output Simon Marlow **20100915105712 Ignore-this: bfa4480dd239dda2a02ac391b6a9219c ] [rts_isProfiled should be a visible API (fixes T2615(dyn)) Simon Marlow **20100915083941 Ignore-this: b8ac09bb9d1a929bf45c6122f8485561 ] [Fix the "lost due to fragmentation" calculation Simon Marlow **20100914145945 Ignore-this: cdffcc9f3061c3a33da5171be111fc43 It was counting the space used by block descriptors as "lost" ] [fix +RTS -S output: use peak_mblocks_allocated, now that mblocks can be freed Simon Marlow **20100914135030 Ignore-this: 65d21e5f86d3ab6ab4d6c255180b6968 ] [Fix egregious bug in deeplyInstantiate simonpj@microsoft.com**20100915070325 Ignore-this: 22ede973038877af2673339aaf5de6cf This resulted in an infinite loop in applyTypeToArgs, in syb ] [Improve HsSyn pretty printing simonpj@microsoft.com**20100915070255 Ignore-this: 7c8e2d86a482453c7e69e22bc31cb03f ] [Remove (most of) the FiniteMap wrapper Ian Lynagh **20100914201703 We still have insertList, insertListWith, deleteList which aren't in Data.Map, and foldRightWithKey which works around the fold(r)WithKey addition and deprecation. ] [Improve ASSERT simonpj@microsoft.com**20100914113900 Ignore-this: dbc0363be5924f543316e77f7d18dd77 ] [Comment on what an "enumeration" type is simonpj@microsoft.com**20100914113850 Ignore-this: c09c8591e3140f305d55fbf945adbf95 ] [Make absent-arg wrappers work for unlifted types (fix Trac #4306) simonpj@microsoft.com**20100914113827 Ignore-this: 1945e56779329e8b79780403710aba98 Previously we were simply passing arguments of unlifted type to a wrapper, even if they were absent, which was stupid. See Note [Absent error Id] in WwLib. ] [Comments only simonpj@microsoft.com**20100914113641 Ignore-this: 3191ce856c9b5d9700cedc9b149b8097 ] [Move error-ids to MkCore (from PrelRules) simonpj@microsoft.com**20100914113635 Ignore-this: c3d820db62ba6139dd7c96bf97e51bb5 and adjust imports accordingly ] [More wibbles to deriving error messages simonpj@microsoft.com**20100914113523 Ignore-this: bd2df662644961138fa209aec843a2aa ] [Fix getThreadCPUTime() Simon Marlow **20100913153838 Ignore-this: 950e048a5724086534b74c609c7d5ed ever since the patch "Check with sysconf _POSIX_THREAD_CPUTIME", it has been returning incorrect results, because the sysconf variable to check should have been _SC_THREAD_CPUTIME, not _POSIX_THREAD_CPUTIME. ] [filter out the gcc-lib directory from the rts package's library-dirs Simon Marlow **20100913101259 Ignore-this: 46dc1dccbfee8a65f9243e125eee117f fixes problems when building with GHC 6.10 on Windows ] [Don't include GC time in heap profiles (#4225) Simon Marlow **20100913133852 Ignore-this: 68ac48b004b311384b5996c6b33ba5cc ] [Use clock_gettime (if available) to measure the process CPU time Simon Marlow **20100913133818 Ignore-this: 8c9300df9b929bfc1db4713c9b6065b3 This is much more accurate than getrusage, which was giving misleading results when trying to time very quick operations like a minor GC. ] [make stg_arg_bitmaps public, and available via the GHCi linker (#3672) Simon Marlow **20100913105235 Ignore-this: e18efd0bd77c521e5530fb59e93b5a42 ] [fix typo Simon Marlow **20100913105100 Ignore-this: 6049eea21208864203b2d79db2edd143 ] [Update release notes and docs with LLVM info. David Terei **20100914072135 Ignore-this: 5b3d0e5c9d5da98ed6ae9c2e8e1f6f30 ] [Remove defaultExtensionFlags Ian Lynagh **20100913165949 The default should do into languageExtensions instead ] [Improve crash message simonpj@microsoft.com**20100913170407 Ignore-this: 5c26a9979f18be8cd12cea823c9f4b5a ] [Fix Trac #4302, plus a little refactoring simonpj@microsoft.com**20100913170355 Ignore-this: cf6886b587aa0e8d723362183625d946 ] [Fix build with 6.10 Ian Lynagh **20100913160048] [Haddock fixes simonpj@microsoft.com**20100913120510 Ignore-this: f3157d6969f10d4cbd593000a477138b ] [Remove two old junk files simonpj@microsoft.com**20100913103426 Ignore-this: ed7af5ef1b9592178909a8d876345302 ] [Super-monster patch implementing the new typechecker -- at last simonpj@microsoft.com**20100913095048 Ignore-this: 14d14a1e4d7a414f5ae8d9d89d1c6a4b This major patch implements the new OutsideIn constraint solving algorithm in the typecheker, following our JFP paper "Modular type inference with local assumptions". Done with major help from Dimitrios Vytiniotis and Brent Yorgey. ] [Fix simplifier statistics simonpj@microsoft.com**20100909085441 Ignore-this: 48e383655aafc912dea15c4d94382863 ] [Trace output simonpj@microsoft.com**20100908170056 Ignore-this: 4b67fa4b310fbf0a16b852686d2d3294 ] [Better debug output simonpj@microsoft.com**20100908170047 Ignore-this: 410cef00616dda7c0c162f65216e8ca3 ] [Add Outputable instance for OccEncl simonpj@microsoft.com**20100908150510 Ignore-this: 6362ef9028287d84f070eaf8963c1bfc ] [Better simplifier counting simonpj@microsoft.com**20100907214840 Ignore-this: 9d4722703f8f47447e86a28c8c50e0ea ] [Put liftStringName into the known-key names simonpj@microsoft.com**20100906112415 Ignore-this: 287064d14ff484da1a6dea6924bc9235 ] [Deprecate NoRelaxedPolyRec simonpj@microsoft.com**20100903234519 Ignore-this: 607217e77f6bc1b91bf57dfd8dd2b967 ] [Buglet in Core Lint simonpj@microsoft.com**20100903234457 Ignore-this: 277535d51b396d3b4b0265a0939c2d4 ] [Give seqId the right type simonpj@microsoft.com**20100903093556 Ignore-this: d1fc7a73dea160614a8d4ddc930f99cd ] [Remove dead code simonpj@microsoft.com**20100903093548 Ignore-this: 92cc3f7651445aa349ee7f114d3ec758 ] [Comments and layout simonpj@microsoft.com**20100903093502 Ignore-this: 9987d1409e654992c1cb1be35cb87728 ] [Remove checkFreeness; no longer needed simonpj@microsoft.com**20100902233227 Ignore-this: c96a12ac9794290aa30402317d88c095 ] [Assert simonpj@microsoft.com**20100902073642 Ignore-this: 4be1ab2f6096665ae5ec7fdd1f025a67 ] [Add aserts simonpj@microsoft.com**20100902073211 Ignore-this: e1409441217fd070c5a7f9ee4cca99ab ] [Wibbles simonpj@microsoft.com**20100831113540 Ignore-this: 903811ab493a7b560a62eb86fcf3ee25 ] [Wibble to allow phantom types in Enum simonpj@microsoft.com**20100825112711 Ignore-this: fdef1c50d92b4a3d46bbe4cbfd8a83ea ] [Add HsCoreTy to HsType simonpj@microsoft.com**20100824141845 Ignore-this: 4ca742b099f9cc90af3167f1012dbba6 The main thing here is to allow us to provide type signatures for 'deriving' bindings without pain. ] [Comments simonpj@microsoft.com**20100823223654 Ignore-this: dd412a55839430c436902d8699d6900b ] [Wibbles to error message simonpj@microsoft.com**20100823163308 Ignore-this: 4d6cd8e613762dca8135c2e3b09264ec ] [Correct type signatures simonpj@microsoft.com**20100823153045 Ignore-this: 42942309221a443258246098f9c0a13b ] [Add missing signatures simonpj@microsoft.com**20100823112413 Ignore-this: 8ee1ce40456306de469938c02df4fed5 ] [Add type signatures in "deriving" bindings simonpj@microsoft.com**20100820234230 Ignore-this: 4726b28968cf65ec16cb65b7e0e7303e ] [Minor dimitris@microsoft.com**20100820131021] [Be a bit less aggressive in mark-many inside a cast simonpj@microsoft.com**20100819104804 Ignore-this: 3fd48fe7647ec7a58c2032cd86ca4d4f ] [Wibble simonpj@microsoft.com**20100818185738 Ignore-this: d5c939311377c0d0c7244aa339193315 ] [Pretty printing change simonpj@microsoft.com**20100818065436 Ignore-this: 4f7e70976dbe52f95effb3e634dfef5d ] [Remember to zonk FlatSkols! simonpj@microsoft.com**20100811143555 Ignore-this: 84f7f9dbda97f561a918c69308ddef9a ] [De-polymorphise simonpj@microsoft.com**20100730151217 Ignore-this: a9304487b983e517a9083fd697f77576 ] [Work around missing type signature in Happy simonpj@microsoft.com**20100730122405 Ignore-this: 7f241a655d93c5ad7763a7ffe8db0c7a Happy generates notHappyAtAll = error "Blah" without a type signature, and currently the new typechecker doesn't generalise it. This patch says "no monomorphism restriction" which makes it generalise again. Better would be to add a type sig to Happy's template ] [Add two local type signatures simonpj@microsoft.com**20100729152611 Ignore-this: afa99bcc515469aa0990d44d8c18a9e6 ] [Second test from Simon's laptop simonpj@microsoft.com**20100729091703 Ignore-this: 4dc64cadae314a5a1b05cc5326918a83 ] [Test commit from Simon's laptop simonpj@microsoft.com**20100729091344 Ignore-this: 109eff835cc19e9f93799d12f09b0ba7 ] [Add OutsideIn flag simonpj@microsoft.com**20100728075525 Ignore-this: 69c2f5c3a15fa653f6da80598aa8d74d ] [Layout only simonpj@microsoft.com**20100727141539 Ignore-this: 1a58a8fe80ba8bced18ae81a2efb9495 ] [Improvement to SimplUtils.mkLam simonpj@microsoft.com**20100727131659 Ignore-this: 739beaefa79baa7e0ebeb5b2b6d1ea91 ] [Give the correct kind to unsafeCoerce# simonpj@microsoft.com**20100727131538 Ignore-this: 6b787de3b398c6d7a61fa04fccd15fd6 ] [Suppress warnings about recursive INLINE in output of desugarer simonpj@microsoft.com**20100727094549 Ignore-this: a361f7238c0fcba526d46326722c42e ] [Rename CorePrep.tryEtaReduce to tryEtaReducePrep simonpj@microsoft.com**20100726231253 Ignore-this: 4375ddace205745244ba224ae012252 This avoids the name clash with the similar but not identical CoreUtils.tryEtaReduce ] [Add a trace message simonpj@microsoft.com**20100719211111 Ignore-this: b5daebe46e50c8cf28cc693f84bbf099 ] [Don't use RelaxedPolyRec in the compiler; it's built in now simonpj@microsoft.com**20100719170441 Ignore-this: a2e4489cdf63478e46282a421ee7aec3 ] [Remove duplicated #defines for FreeBSD Matthias Kilian **20100912181518 Ignore-this: d16214fef8635c7c9ef4edec4e8e7896 ] [Don't fail with absolute silence Matthias Kilian **20100912150506 Ignore-this: 479e2321f39b263fa2d9f80491e5e9f7 ] [Add a release note: "-dynload wrapper" removed Ian Lynagh **20100911195809] [put back the conversion of warn-lazy-unlifted-bindings into an error until 7.2 Ian Lynagh **20100911193434 I think we'll currently still have too many people with old versions of alex/happy to want to make this an error now. ] [6.14 -> 7.0 Ian Lynagh **20100911192837] [Add a couple more release notes Ian Lynagh **20100911162059] [Document -dsuppress-module-prefixes Ian Lynagh **20100911162005] [Enable -fregs-graph with -O2; fixes #2790 Ian Lynagh **20100910191301] [Remove unused code Ian Lynagh **20100909170207] [Fix warnings Ian Lynagh **20100909154348] [Fix warnings Ian Lynagh **20100909150957] [Remove context completion lykahb@gmail.com**20100901160153 Ignore-this: dc61b259dcb7063f0c76f56788b5d2af Now completion suggests to remove only modules added to context before. ] [avoid Foreign.unsafePerformIO Ross Paterson **20100909125531 Ignore-this: 5cabeae4cffec8fc17ef7c0cabbea22a ] [updates to the release notes Simon Marlow **20100909111450 Ignore-this: a4d25ad8815c305b7e0f21fd4f6ee37b ] [newAlignedPinnedByteArray#: avoid allocating an extra word sometimes Simon Marlow **20100909110805 Ignore-this: 996a3c0460068ab2835b4920905b3e75 ] [Finish breaking up vectoriser utils benl@ouroborus.net**20100909061311 Ignore-this: 217fe1d58a3e8bb13200bcb81353a416 ] [Move VectType module to Vectorise tree benl@ouroborus.net**20100909042451 Ignore-this: 5af8cf394d4835911259ca3ffb6774c5 ] [Sort all the PADict/PData/PRDict/PRepr stuff into their own modules benl@ouroborus.net**20100909035147 Ignore-this: 53436329773347cad793adbd83e90a9e ] [Break out Repr and PADict stuff for vectorisation of ADTs to their own modules benl@ouroborus.net**20100909025759 Ignore-this: d2b7d2f79332eda13416449742f7cf1c ] [Break out conversion functions to own module benl@ouroborus.net**20100909023332 Ignore-this: 613f2666b6ca7f2f8876fcc1e4a59593 ] [Comments and formatting only benl@ouroborus.net**20100909022117 Ignore-this: c8e30139d730669e5db44f0ef491a588 ] [Remove "-dynload wrapper"; fixes trac #4275 Ian Lynagh **20100908213251] [Don't set visibility on Windows Ian Lynagh **20100905122442 With gcc 4.5.0-1, using visibility hidden gives: error: visibility attribute not supported in this configuration; ignored ] [Fix warnings on Windows Ian Lynagh **20100905111201 Ignore-this: c5cce63bb1e0c7a27271bed78d25fbc5 ] [Fix gcc wrapper for new mingw binaries Ian Lynagh **20100905001807 Ignore-this: f6acc8c911055ffce632bac138ccc939 ] [Don't pass our gcc options to stage0 ghc's gcc; they may not be suitable Ian Lynagh **20100905103129] [Update intree-mingw creation Ian Lynagh **20100904225559] [Update commands to build in-tree mingw Ian Lynagh **20100904215112] [Break out hoisting utils into their own module benl@ouroborus.net**20100908074102 Ignore-this: e3ba4ed0252a2def1ed88a9e14c58fea ] [Break out closure utils into own module benl@ouroborus.net**20100908072040 Ignore-this: 216172b046ff101cf31a1753667a5383 ] [Move VectVar module to Vectorise tree benl@ouroborus.net**20100908065904 Ignore-this: 1fba5333d29927dba4275381e1a7f315 ] [Break out vectorisation of expressions into own module benl@ouroborus.net**20100908065128 Ignore-this: 6a952b80fb024b5291f166477eb1976 ] [Break out TyCon classifier into own module benl@ouroborus.net**20100908063111 Ignore-this: da754c4ef6960b4e152ea1bf8c04ab6f ] [Break out vectorisation of TyConDecls into own module benl@ouroborus.net**20100908052004 Ignore-this: c0ab4fb2a05ca396efe348b384db1ebf ] [Break out type vectorisation into own module benl@ouroborus.net**20100907110311 Ignore-this: 67bd70a21d16468daf68dd3ec1ff7d62 ] [Tidy up the ArchHasAdjustorSupport definition Ian Lynagh **20100904144234] [ppc: switch handling of 'foreign import wrapper' (FIW) to libffi Sergei Trofimovich **20100829192859 Ignore-this: 662ea926681ebea0759e2a04a38e82b7 Joseph Jezak reported darcs-2.4.4 SIGSEGV in interactive mode in ghc-6.12.3. So I've concluded ppc also has rotten native adjustor. I don't have hardware to verify the patch (ticket #3516 should help to test it), but I think it will help (as similar patch helped for ia64 and ppc64). ] [Binary no longer has unusable UNPACK pragmas, so no need to turn of -Werror Ian Lynagh **20100904133339] [Don't haddock packages that we aren't going to install Ian Lynagh **20100903231921] [Give haddock per-package source entity paths; fixes #3810 Ian Lynagh **20100903221335] [update for containers-0.4 Simon Marlow **20100903105131 Ignore-this: 556eac0e4926c9b8af6b66d7b069302c ] [Fix for nursery resizing: the first block's back pointer should be NULL Simon Marlow **20100827102818 Ignore-this: fb68938e3f1e291e3c9e5e8047f9dcd2 I'm not sure if this could lead to a crash or not, but it upsets +RTS -DS Might be related to #4265 ] [Add some -no-user-package-conf flags Ian Lynagh **20100902224726 Stops user-installed packages breaking the build ] [Fix warnings: Remove unused imports Ian Lynagh **20100902204342] [Finish breaking up VectBuiltIn and VectMonad, and add comments benl@ouroborus.net**20100831100724 Ignore-this: 65604f3d22d03433abc12f10be40050d ] [Fix warnings benl@ouroborus.net**20100830083746 Ignore-this: 2a0e000985f694582a6f9a9261ff2739 ] [Break up vectoriser builtins module benl@ouroborus.net**20100830070900 Ignore-this: b86bd36a7875abdcf16763902ba2e637 ] [Move VectCore to Vectorise tree benl@ouroborus.net**20100830053415 Ignore-this: d5763ca6424285b39a58c7792f4a84a1 ] [Split out vectoriser environments into own module benl@ouroborus.net**20100830050252 Ignore-this: 5319111c74831394d2c29b9aedf5a766 ] [Comments and formatting to vectoriser, and split out varish stuff into own module benl@ouroborus.net**20100830042722 Ignore-this: d3f0c98ed8124dd0fca9a2ccea3e15fd ] [Fix warnings benl@ouroborus.net**20100830040340 Ignore-this: d6cfad803ad4617e7fdaa62e4a895282 ] [Fix warning about multiply exported name benl@ouroborus.net**20100830035243 Ignore-this: 27ce2c1d22d9f99929d16a426343044e ] [Vectorisation of method types benl@ouroborus.net**20100830032941 Ignore-this: 75614571d5c246a4906edb3b39ab1e0b ] [Comments and formatting to vectoriser benl@ouroborus.net**20100830032516 Ignore-this: fe665b77108501c7960d858be3290761 ] [Implement -dsuppress-module-prefixes benl@ouroborus.net**20100830032428 Ignore-this: 2bb8bad9c60ef9044132bba118010687 ] [Whitespace only benl@ouroborus.net**20100527045629 Ignore-this: 4c160dfa77727e659817b6af9c84684a ] [Disambiguate a function name Ian Lynagh **20100828225827] [users_guide.xml is now generated Ian Lynagh **20100828225751] [Pass more -pgm flags in the ghc wrapper; fixes #3863 Ian Lynagh **20100827204537] [Add a new-IO manager release note Ian Lynagh **20100827171616] [Merge a duplicate release note Ian Lynagh **20100827171511] [Typo, spotted by Johan Tibell Ian Lynagh **20100827153914] [First pass at 6.14.1 release notes Ian Lynagh **20100826220811] [Fix typo Ian Lynagh **20100824201330] [FIX BUILD: add rts_isProfiled to the symbol table Simon Marlow **20100826094319 Ignore-this: 9536ddb0a94721c8dec03a2a981cfa83 ] [Fix the DPH package cleaning/profiled mess even more (the build was broken) Simon Marlow **20100826084436 Ignore-this: 49d7e4db2fb53b856c213c74c8969d82 ] [Remove the debugging memory allocator - valgrind does a better job Simon Marlow **20100824113537 Ignore-this: a3731a83dc18b0fd0de49452e695a7ca I got fed up with the constant bogus output from the debugging memory allocator in RtsUtils.c. One problem is that we allocate memory in constructors that then isn't tracked, because the debugging allocator hasn't been initialised yet. The bigger problem is that for a given piece of leaking memory it's impossible to find out where it was allocated; however Valgrind gives output like this: ==6967== 8 bytes in 1 blocks are still reachable in loss record 1 of 7 ==6967== at 0x4C284A8: malloc (vg_replace_malloc.c:236) ==6967== by 0x4C28522: realloc (vg_replace_malloc.c:525) ==6967== by 0x6745E9: stgReallocBytes (RtsUtils.c:213) ==6967== by 0x68D812: setHeapAlloced (MBlock.c:91) ==6967== by 0x68D8E2: markHeapAlloced (MBlock.c:116) ==6967== by 0x68DB56: getMBlocks (MBlock.c:240) ==6967== by 0x684F55: alloc_mega_group (BlockAlloc.c:305) ==6967== by 0x6850C8: allocGroup (BlockAlloc.c:358) ==6967== by 0x69484F: allocNursery (Storage.c:390) ==6967== by 0x694ABD: allocNurseries (Storage.c:436) ==6967== by 0x6944F2: initStorage (Storage.c:217) ==6967== by 0x673E3C: hs_init (RtsStartup.c:160) which tells us exactly what the leaking bit of memory is. So I don't think we need our own debugging allocator. ] [free the entries in the thread label table on exit Simon Marlow **20100824112606 Ignore-this: c9d577c06548cda80791e590e40d35b3 ] [Panic in the right way simonpj@microsoft.com**20100825091614 Ignore-this: e6ea4f6dfd2aea088828ea7a945ddd5f ] [Fix the DPH/profiled make thing (again) simonpj@microsoft.com**20100825091602 Ignore-this: bc58fa48034ac40cf7be4170958ea29e ] [Don't test for gcc flags before we've found gcc Ian Lynagh **20100824131401] [Change how the dblatex/lndir problem is worked around Ian Lynagh **20100824130938 Hack: dblatex normalises the name of the main input file using os.path.realpath, which means that if we're in a linked build tree, it find the real source files rather than the symlinks in our link tree. This is fine for the static sources, but it means it can't find the generated sources. We therefore also generate the main input file, so that it really is in the link tree, and thus dblatex can find everything. ] [Clean the generated userguide sources Ian Lynagh **20100824105827 Ignore-this: 39b4f9702c688c053ed3273b20969597 ] [DPH should not even be built if GhcProfiled simonpj@microsoft.com**20100823133439 Ignore-this: 62acbf83de5b70ff6d27ab38ce9218ae It's not just when cleaning! ] [The templateHaskellOk check should only run in stage2 simonpj@microsoft.com**20100823133353 Ignore-this: f6dc9292923a1ca201953c5f58c0af3c Because rtsIsProfiled is only available in stage2 ] [Add a couple of missing tests for EAGER_BLACKHOLE Simon Marlow **20100823104654 Ignore-this: 70c981b86370b0c7564b29b057650897 This was leading to looping and excessive allocation, when the computation should have just blocked on the black hole. Reported by Christian Höner zu Siederdissen on glasgow-haskell-users. ] [Don't check for swept blocks in -DS. Marco Túlio Gontijo e Silva **20100718225526 Ignore-this: ad5dcf3c247bc19fbef5122c1142f3b2 The checkHeap function assumed the allocated part of the block contained only alive objects and slops. This was not true for blocks that are collected using mark sweep. The code in this patch skip the test for this kind of blocks. ] [Fix "darcs get" Ian Lynagh **20100822183542] [Add "darcs-all upstreampull" Ian Lynagh **20100822163419 This pulls from the upstream repos, for those packages which have upstreams ] [Generate the bit in the user guide where we say what -fglasgow-exts does Ian Lynagh **20100822155514 Stops the docs going out of sync with the code. ] [Factor out the packages file parsing in darcs-all Ian Lynagh **20100822154813] [Document --supported-extensions Ian Lynagh **20100822134530] [fix extraction of command stack of arguments of arrow "forms" (fixes #4236) Ross Paterson **20100822090022 Ignore-this: a93db04ec4f20540642a19cdc67d1666 The command stack was being extracted (by unscramble) with the outermost type first, contrary to the comment on the function. ] [minor fix to comment Ross Paterson **20100822085838 Ignore-this: 8d203ba2600eaf4cf21b043dcfa96cdc ] [Add the RTS library path to the library search path Ian Lynagh **20100820155523 In case the RTS is being explicitly linked in. For #3807. ] [Remove some duplication of C flags Ian Lynagh **20100819233743 We now use the CONF_CC_OPTS_STAGEn C flags in machdepCCOpts, rather than repeating them there. ] [Set -fno-stack-protector in CONF_CC_OPTS_STAGE* rathre than extra-gcc-opts Ian Lynagh **20100819233031 The latter is only used when compiling .hc files, whereas we need it for .c files too. ] [Give clearer errors for bad input in the packages file; suggested by pejo Ian Lynagh **20100819232420] [Set -march=i686 on OS X x86 in the configure variables Ian Lynagh **20100819230939 We used to set it only in machdepCCOpts, so this is more consistent ] [Give each stage its own Config.hs Ian Lynagh **20100819224709 This also means the file is generated in a dist directory, not a source directory. ] [Fix cleaning when GhcProfiled = YES Ian Lynagh **20100819131346 We need to include the DPH cleaning rules, even though we don't build DPH when GhcProfiled = YES. ] [stgReallocBytes(DEBUG): don't fail when the ptr passed in is NULL Simon Marlow **20100817150836 Ignore-this: 4b5063e65e01399f64a33f0d0555ff38 ] [Use make-command in rules/bindist.mk Ian Lynagh **20100818191243 Rather than it having its own specialised version ] [Use make-command when installing packages Ian Lynagh **20100818190600] [Add _DATA_FILES to package-data.mk files Ian Lynagh **20100818185801] [Add a "make-command" utility Makefile function Ian Lynagh **20100818183055] [LLVM: Nicer format for lack of shared lib warning David Terei **20100817145207 Ignore-this: 753d45762601d87761614937a1bb6716 ] [fix FP_CHECK_ALIGNMENT for autoconf 2.66 (fixes #4252) Ross Paterson **20100816142442 Ignore-this: cd784b8888d32b3b2cc2cc0969ec40f Recent versions of AS_LITERAL_IF don't like *'s. Fix from http://blog.gmane.org/gmane.comp.sysutils.autoconf.general/month=20100701 ] [Refactor the command-line argument parsing (again) simonpj@microsoft.com**20100816074453 Ignore-this: 26dc9e37a88660a887a2e316ed7a9803 This change allows the client of CmdLineParser a bit more flexibility, by giving him an arbitrary computation (not just a deprecation message) for each flag. There are several clients, so there are lots of boilerplate changes. Immediate motivation: if RTS is not profiled, we want to make Template Haskell illegal. That wasn't with the old setup. ] [Add upstream repo to the packages file Ian Lynagh **20100815154741] [Make the "tag" column of the packages file always present Ian Lynagh **20100815151657 It makes the parsing simpler if we always have the same number of columns ] [Disable object splitting on OSX; works around #4013 Ian Lynagh **20100815134759] [Return memory to the OS; trac #698 Ian Lynagh **20100813170402] [Reduce the xargs -s value we use on Windows Ian Lynagh **20100812223721 With 30000 I was getting: xargs: value for -s option should be < 28153 ] [LLVM: Enable shared lib support on Linux x64 David Terei **20100813191534 Ignore-this: 642ed37af38e5f17d419bf4f09332671 ] [Re-do the arity calculation mechanism again (fix Trac #3959) simonpj@microsoft.com**20100813161151 Ignore-this: d4a2aa48150b503b20c25351a79decfb After rumination, yet again, on the subject of arity calculation, I have redone what an ArityType is (it's purely internal to the CoreArity module), and documented it better. The result should fix #3959, and I hope the related #3961, #3983. There is lots of new documentation: in particular * Note [ArityType] describes the new datatype for arity info * Note [State hack and bottoming functions] says how bottoming functions are dealt with, particularly covering catch# and Trac #3959 I also found I had to be careful not to eta-expand single-method class constructors; see Note [Newtype classes and eta expansion]. I think this part could be done better, but it works ok. ] [Comments only simonpj@microsoft.com**20100813161019 Ignore-this: baf68300d8bc630bf0b7ab27647b33a0 ] [Modify FloatOut to fix Trac #4237 simonpj@microsoft.com**20100813163120 Ignore-this: ffc8d00d4b7f0a8a785fcef312900413 The problem was that a strict binding was getting floated out into a letrec. This only happened when profiling was on. It exposed a fragility in the floating strategy. This patch makes it more robust. See Note [Avoiding unnecessary floating] ] [Fix egregious bug in SetLevels.notWorthFloating simonpj@microsoft.com**20100813161429 Ignore-this: d22865f48d417e6a6b732de3dfba378f This bug just led to stupid code, which would later be optimised away, but better not to generate stupid code in the first place. ] [Delete GhcLibProfiled simonpj@microsoft.com**20100813140152 Ignore-this: 2e1a3f677308be726bd022f45e2fd856 Simon M and I looked at this, and we think GhcLibProfiled is (a) not needed (b) confusing. Ian should review. Really, if GhcProfiled is on we should also check that 'p' is in the GhcLibWays ] [Do not build DPH when GhcProfiled (fixes #4172) simonpj@microsoft.com**20100813140021 Ignore-this: 9e20181643b456e841f845ae0cab0a9a Reason: DPH uses Template Haskell and TH doesn't work in a profiled compiler ] [Fix Trac #4220 simonpj@microsoft.com**20100812131319 Ignore-this: 33141cfd81627592150a9e5973411ff8 For deriving Functor, Foldable, Traversable with empty data cons I just generate a null equation f _ = error "urk" There are probably more lurking (eg Enum) but this will do for now. ] [Improve the Specialiser, fixing Trac #4203 simonpj@microsoft.com**20100812131133 Ignore-this: 482afbf75165e24a80527a6e52080c07 Simply fixing #4203 is a tiny fix: in case alterantives we should do dumpUDs *including* the case binder. But I realised that we can do better and wasted far too much time implementing the idea. It's described in Note [Floating dictionaries out of cases] ] [Comments simonpj@microsoft.com**20100812101456 Ignore-this: 6362fe887d25688c12ef2c3cf5554ce4 ] [Comments only simonpj@microsoft.com**20100812101439 Ignore-this: 7ed2f5fc08811cbe9958c2309a9ed1fa ] [Fix bug in linting of shadowed case-alternative binders simonpj@microsoft.com**20100812101413 Ignore-this: 9212a5e2c03421749f5935b3944ecf53 ] [Comments and spacing only simonpj@microsoft.com**20100812101347 Ignore-this: ed59a7dae7decb24470709dc1c118dbb ] [Add more info to more parse error messages (#3811) Ian Lynagh **20100809233108] [Run finalizers *after* updating the stable pointer table (#4221) Simon Marlow **20100810133739 Ignore-this: b0462f80dd64eac71e599d8a9f6dd665 Silly bug really, we were running the C finalizers while the StablePtr table was still in a partially-updated state during GC, but finalizers are allowed to call freeStablePtr() (via hs_free_fun_ptr(), for example), and chaos ensues. ] [Do the dependency-omitting for 'make 1' in a slightly different way Simon Marlow **20100810093446 Ignore-this: af15edd3a1492cbd93111316b57e02e4 I encountered a couple of things that broke after Ian's previous patch: one was my nightly build scripts that use 'make stage=2' at the top level, and the other is 'make fast' in libraries/base, which uses 'stage=0' to avoid building any compilers. So my version of this patch is more direct: it just turns off the appropriate dependencies using a variable set by 'make 1', 'make 2', etc. ] [Integrate new I/O manager, with signal support Johan Tibell **20100724102355 Ignore-this: eb092857a2a1b0ca966649caffe7ac2b ] [Add DoAndIfThenElse support Ian Lynagh **20100808194625] [Make another parse error more informative Ian Lynagh **20100808193340] [Make a parse error say what it is failing to parse; part of #3811 Ian Lynagh **20100808155732] [Send ghc progress output to stdout; fixes #3636 Ian Lynagh **20100808142542] [Fix the HsColour test in the build system Ian Lynagh **20100805155319 Ignore-this: ba2752b04801a253e891b31e1914485d ] [Fix the -lm configure test; fixes #4155 Ian Lynagh **20100805142508 Ignore-this: 358b8b1074d2d22fb8d362ea6d8b80d6 ] [Don't restrict filenames in line pragmas to printable characters; fixes #4207 Ian Lynagh **20100805135011 Ignore-this: e3d32312127165e40e6eaa919193d60b "printable" is ASCII-only, whereas in other locales we can get things like # 1 "" ] [Ensure extension flags are flattened in the Cmm phase Ian Lynagh **20100805133614 If we start with a .cmmcpp file then they don't get flattened in the CmmCpp phase, as we don't run that phase. ] [Add "cmmcpp" as a Haskellish source suffix Ian Lynagh **20100805132555] [On amd64/OSX we don't need to be given memory in the first 31bits Ian Lynagh **20100805120600 Ignore-this: 42eb64e25ad4b66ae022884305e0297b as PIC is always on ] [NCG: Don't worry about trying to re-freeze missing coalescences benl@ouroborus.net**20100702053319 Ignore-this: ea05cbee19b6c5c410db41292cbb64b0 ] [Make -rtsopts more flexible Ian Lynagh **20100805011137 The default is a new "some" state, which allows only known-safe flags that we want on by default. Currently this is only "--info". ] [Test for (fd < 0) before trying to FD_SET it Ian Lynagh **20100804173636] [Remove "On by default" comments in DynFlags Ian Lynagh **20100802110803 Ignore-this: 2a51055277b5ce9f0e98e1438b212027 These make less sense now we support multiple languges. The "languageExtensions" function gives the defaults. ] [Fix build: Add newline to end of ghc-pkg/Main.hs Ian Lynagh **20100801183206] [Add a versions haddock binary for Windows Ian Lynagh **20100801180917] [ghc-pkg: don't fail, if a file is already removed ich@christoph-bauer.net**20100725162606 Ignore-this: 5501d6812c31f4da525c7fb24f6dcaed ] [Remove push-all from file list in boot script (push-all no longer exists) Ian Lynagh **20100801121841 Ignore-this: eec130f06610d8728a57626682860a1a ] [Add error checking to boot-pkgs script Ian Lynagh **20100801121432 Ignore-this: 8afd6663db443c774bad45d75bbfe950 ] [Add more error checking to the boot script Ian Lynagh **20100801113628] [Remove libHSrtsmain.a before creating it Ian Lynagh **20100801005432 Otherwise it isn't updated properly if rts/Main.c changes ] [Expose the functions haddock needs even when haddock is disabled; #3558 Ian Lynagh **20100731115506] [Always haddock by default Ian Lynagh **20100730235001 Revert this patch: Matthias Kilian **20090920181319 Don't build haddock if HADDOC_DOCS = NO, and disable HADDOC_DOCS if GhcWithInterpreter = NO Haddock uses TcRnDriver.tcRnGetInfo, which is only available if GHCI is built. Set HADDOC_DOCS to NO if GhcWithInterpreter is NO, and disable the haddock build if HADDOC_DOCS = NO. ] [Add a debugTrace for the phases that we run Ian Lynagh **20100729201503] [* Add StringPrimL as a constructor for Template Haskell (Trac #4168) simonpj@microsoft.com**20100730131922 Ignore-this: 520d0a0a14b499b299e8b2be8d148ff0 There are already constructors for IntPrim, FloatPrim etc, so this makes it more uniform. There's a corresponding patch for the TH library ] [Add thread affinity support for FreeBSD Gabor Pali **20100720001409 Ignore-this: 6c117b8219bfb45445089e82ee470410 - Implement missing functions for setting thread affinity and getting real number of processors. - It is available starting from 7.1-RELEASE, which includes a native support for managing CPU sets. - Add __BSD_VISIBLE, since it is required for certain types to be visible in addition to POSIX & C99. ] [Disable symbol visibility pragmas for FreeBSD Ian Lynagh **20100729012507 Do not use GCC pragmas for controlling visibility, because it causes "undefined reference" errors at link-time. The true reasons are unknown, however FreeBSD 8.x includes GCC 4.2.1 in the base system, which might be buggy. ] [Fix numeric escape sequences parsing Anton Nikishaev **20100721194208 Ignore-this: dd71935b1866b5624f7975c45ad519a1 This fixes trac bug #1344 ] [Explicitly give the right path to perl when making the OS X installer; #4183 Ian Lynagh **20100728163030] [Set -fno-stack-protector in extra-gcc-opts; fixes #4206 Ian Lynagh **20100728161957 We were using it only when building the RTS, and only on certain platforms. However, some versions of OS X need the flag, while others don't support it, so we now test for it properly. ] [Make PersistentLinkerState fields strict; fixes #4208 Ian Lynagh **20100727201911 Ignore-this: fc5cfba48cd16624f6bb15a7a03a3b4 We modify fields a lot, so we retain the old value if they aren't forced. ] [Don't rebuild dependency files unnecessarily when doing "make 1" etc Ian Lynagh **20100726211512 Ignore-this: d91a729e5113aa964cc67768e92e57ef ] [LLVM: If user specifies optlo, don't use '-O' levels David Terei **20100726105650 Ignore-this: e05e103b09d1de937540ffad7983f88e ] [Flatten flags for ghci's :show Ian Lynagh **20100725135320] [Add support for Haskell98 and Haskell2010 "languages" Ian Lynagh **20100724230121] [Rename "language" varibles etc to "extension", and add --supported-extensions Ian Lynagh **20100724223624] [Separate language option handling into 2 phases Ian Lynagh **20100724212013 We now first collect the option instructions (from the commandline, from pragmas in source files, etc), and then later flatten them into the list of enabled options. This will enable us to use different standards (H98, H2010, etc) as a base upon which to apply the instructions, when we don't know what the base will be when we start collecting instructions. ] [Separate the language flags from the other DynFlag's Ian Lynagh **20100724133103 Ignore-this: 47bb8d42e621e47016b66c7472bd6cb5 ] [Set stage-specific CC/LD opts in the bindist configure.ac Ian Lynagh **20100724113748 Ignore-this: f06926d185a35ddd05490ca4a257e992 ] [Use different CC/LD options for different stages Ian Lynagh **20100723223059] [Add some error belchs to the linker, when we find bad magic numbers Ian Lynagh **20100723200822] [Add some more linker debugging prints Ian Lynagh **20100723180237] [When (un)loading an object fails, say which object in teh panic Ian Lynagh **20100723162649] [Add a release note: GHCi import syntax Ian Lynagh **20100721193647] [Deprecate NewQualifiedOperators extension (rejected by H') Ian Lynagh **20100719150909 Ignore-this: 6e7e3bedc5360c5975f73497b3e6cba5 ] [LLVM: Allow optlc and optlo to override default params for these systools David Terei **20100722181631 Ignore-this: e60af7941996f7170fb3bfb02a002082 ] [LLVM: Code and speed improvement to dominateAllocs pass. David Terei **20100721143654 Ignore-this: 9fb7058c8a2afc005521298c7b8d0036 ] [Comments only simonpj@microsoft.com**20100721144257 Ignore-this: b3091ddcd1df271eb85fe90978ab7adc ] [Fix inlining for default methods simonpj@microsoft.com**20100721144248 Ignore-this: 61a11a8f741f775000c6318aae4b3191 This was discombobulated by a patch a week ago; now fixed, quite straightforwardly. See Note [Default methods and instances] ] [Allow reification of existentials and GADTs simonpj@microsoft.com**20100721090437 Ignore-this: 20f1ccd336cc25aff4d4d67a9ac2211a It turns out that TH.Syntax is rich enough to express even GADTs, provided we express them in equality-predicate form. So for example data T a where MkT1 :: a -> T [a] MkT2 :: T Int will appear in TH syntax like this data T a = forall b. (a ~ [b]) => MkT1 b | (a ~ Int) => MkT2 While I was at it I also improved the reification of types, so that we use TH.TupleT and TH.ListT when we can. ] [add numSparks# primop (#4167) Simon Marlow **20100720153746 Ignore-this: f3f925e7de28f3f895213aefbdbe0b0f ] [LLVM: Decrease max opt level used under OSX to avoid bug David Terei **20100720160938 Ignore-this: 34b0b3550f00b27b00ad92f8232745e5 Currently, many programs compiled with GHC at -O2 and LLVM set to -O3 will segfault (only under OSX). Until this issue is fixed I have simply 'solved' the segfault by lowering the max opt level for LLVM used to -O2 under OSX. All these recent changes to OSX should mean its finally as stable as Linux and Windows. ] [LLVM: Fix OSX to work again with TNTC disabled. David Terei **20100720160845 Ignore-this: 8dc98139cfa536b2a64aa364d040b581 ] [LLVM: Fix printing of local vars so LLVM works with -fnew-codegen David Terei **20100720160302 Ignore-this: d883c433dfaed67921a8c5360e1f9f6a ] [Use a separate mutex to protect all_tasks, avoiding a lock-order-reversal Simon Marlow **20100716150832 Ignore-this: ffbdb4ee502e0f724d57acb9bfbe9d92 In GHC 6.12.x I found a rare deadlock caused by this lock-order-reversal: AQ cap->lock startWorkerTask newTask AQ sched_mutex scheduleCheckBlackHoles AQ sched_mutex unblockOne_ wakeupThreadOnCapabilty AQ cap->lock so sched_mutex and cap->lock are taken in a different order in two places. This doesn't happen in the HEAD because we don't have scheduleCheckBlackHoles, but I thought it would be prudent to make this less likely to happen in the future by using a different mutex in newTask. We can clearly see that the all_tasks mutex cannot be involved in a deadlock, becasue we never call anything else while holding it. ] ['make fast' in a package does not build any compilers Simon Marlow **20100715125904 Ignore-this: f27e70faf3944831dad16e89a4e273da ] [LLVM: Fix up botched last commit David Terei **20100719104823 Ignore-this: a32e0f6a38cb9e02527eb8ca69b3eb59 ] [LLVM: Fix warning introduce in last commit. David Terei **20100719103411 Ignore-this: e9c92a9402aff50d60ab26e6ad441bfc ] [LLVM: Use mangler to fix up stack alignment issues on OSX David Terei **20100718231000 Ignore-this: 9f6e8cb855269cb3a5ac1a23480d0e71 ] [Fix #4195 (isGadtSyntaxTyCon returns opposite result) illissius@gmail.com**20100715134134 Ignore-this: a90403f893030432b5c15d743647f350 ] [Update to time 1.2.0.3 Ian Lynagh **20100717181810 Ignore-this: 1ccb4801a73f399e6718ce556543ede1 ] [Reorder RTS --info output Ian Lynagh **20100717162356] [Fix unreg prof build: Define CCS_SYSTEM in stg/MiscClosures.h Ian Lynagh **20100717142832 Ignore-this: 9675f3f51b6dac40483155344e7f45b6 ] [Make mkDerivedConstants as a stage 1 program Ian Lynagh **20100717000827 Ignore-this: 5357403461b209b8606f1d33defb51cf This way it gets the defines for the right platform when cross-compiling ] [Don't generate Haskell dependencies if we don't have any Haskell sources Ian Lynagh **20100717000800 Ignore-this: 454abd0358f535b7e789327125c9206c ] [Link programs that have no Haskell objects with gcc rather than ghc Ian Lynagh **20100716235303 Ignore-this: f65588b69675edea616cc434e769b0a4 ] [Use gcc to build C programs for stages >= 1 Ian Lynagh **20100716223703 Ignore-this: 9f843a4e17285cda582117504707f9e7 ] [Add platform info to "ghc --info" output Ian Lynagh **20100716141953] [Tidy up Config.hs generation Ian Lynagh **20100716140630] [Fix HC porting test in makefiles Ian Lynagh **20100716010808 Ignore-this: 6052c1dd022a6108ab2236a299ee1d84 Now that we are trying to support cross compilation, we can't use "$(TARGETPLATFORM)" != "$(HOSTPLATFORM)" as a test for HC-porting. ] [Change a BUILD var to a HOST var Ian Lynagh **20100716002558] [Remove an unnecessary #include Ian Lynagh **20100715233930 Ignore-this: dcede249de6be7e3c9305c9279c2ca07 ] [Split up some make commands, so that errors aren't overlooked Ian Lynagh **20100715152237 Ignore-this: fb69b0a25d9ca71dae5e75d38db675cd When we ask make to run "a | b", if a fails then the pipeline might still exit successfuly. ] [Remove an unnecessary #include Ian Lynagh **20100715143000 Ignore-this: 4e098cac5dda2dd595ca0a0f5121853c ] [Simplify some more CPP __GLASGOW_HASKELL__ tests Ian Lynagh **20100715142500] [Remove some code only used with GHC 6.11.* Ian Lynagh **20100715141720] [__GLASGOW_HASKELL__ >= 609 is now always true Ian Lynagh **20100715141544] [Correct the values in ghc_boot_platform.h Ian Lynagh **20100714223717 Ignore-this: 4c99116f7ac73fadbd6d16807f57a693 ] [Change some TARGET checks to HOST checks Ian Lynagh **20100714184715] [LLVM: Add inline assembly to binding. David Terei **20100714152530 Ignore-this: 72a7b5460c128ed511e8901e5889fe2b ] [LLVM: Fix mistype in last commit which broke TNTC under win/linux. David Terei **20100714153339 Ignore-this: 302d7957e3dded80368ebade5312ab35 ] [Remove unnecessary #include Ian Lynagh **20100713153704 Ignore-this: c37d3127b1dc68f59270c07173994c28 ] [Change some TARGET tests to HOST tests in the RTS Ian Lynagh **20100713141034 Which was being used seemed to be random ] [LLVM: Add in new LLVM mangler for implementing TNTC on OSX David Terei **20100713183243 Ignore-this: 394fb74d7f9657d8b454bd0148d24bf7 ] [Refactor where an error message is generated simonpj@microsoft.com**20100713115733 Ignore-this: f94467856238586fcbbe48537141cf78 ] [Comments only simonpj@microsoft.com**20100713115703 Ignore-this: 5815442c4e69b9ec331b34242a596253 ] [Comments on data type families simonpj@microsoft.com**20100713115640 Ignore-this: 90a333bb7f7d64a49fb7dd180d893f6b ] [Fix Trac #T4136: take care with nullary symbol constructors simonpj@microsoft.com**20100707135945 Ignore-this: 2a717a24fefcd593ea41c23dad351db0 When a nullary constructor is a symbol eg (:=:) we need to take care. Annoying. ] [Fix Trac #4127 (and hence #4173) simonpj@microsoft.com**20100707123125 Ignore-this: 98bb6d0f7182b59f8c93596c61f9785d The change involves a little refactoring, so that the default method Ids are brought into scope earlier, before the value declarations are compiled. (Since a value decl may contain an instance decl in a quote.) See Note [Default method Ids and Template Haskell] in TcTyClsDcls. ] [Fix second bug in Trac #4127 simonpj@microsoft.com**20100701140124 Ignore-this: c8d1cc27364fe9ee5a52acb1ecb5cdd9 This bug concerned the awkward shadowing we do for Template Haskell declaration brackets. Lots of comments in Note [Top-level Names in Template Haskell decl quotes] ] [ia64: switch handling of 'foreign import wrapper' (FIW) to libffi Sergei Trofimovich **20100709213922 Ignore-this: fd07687e0089aebabf62de85d2be693 I tried to build darcs-2.4.4 with ghc-6.12.3 and got coredumps when darcs is used in interactive mode. I tried test from ticket #3516 and found out FIW code is broken. Instead of fixing it I just switched to libffi. Result built successfully, passed 'foreign import wrapper' test from ticket #3516 and builds working darcs. ] [* storage manager: preserve upper address bits on 64bit machines (thanks to zygoloid) Sergei Trofimovich **20100709115917 Ignore-this: 9f1958a19992091ddc2761c389ade940 Patch does not touch amd64 as it's address lengts is 48 bits at most, so amd64 is unaffected. the issue: during ia64 ghc bootstrap (both 6.10.4 and 6.12.3) I got the failure on stage2 phase: "inplace/bin/ghc-stage2" -H32m -O -H64m -O0 -w ... ghc-stage2: internal error: evacuate: strange closure type 15 (GHC version 6.12.3 for ia64_unknown_linux) Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug make[1]: *** [libraries/dph/dph-base/dist-install/build/Data/Array/Parallel/Base/Hyperstrict.o] Aborted gdb backtrace (break on 'barf'): Breakpoint 1 at 0x400000000469ec31: file rts/RtsMessages.c, line 39. (gdb) run -B/var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info Starting program: /var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/lib/ghc-stage2 -B/var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info [Thread debugging using libthread_db enabled] Breakpoint 1, barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39 39 va_start(ap,s); (gdb) bt #0 barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39 #1 0x400000000474a1e0 in evacuate (p=0x6000000000147958) at rts/sm/Evac.c:756 #2 0x40000000046d68c0 in scavenge_srt (srt=0x6000000000147958, srt_bitmap=7) at rts/sm/Scav.c:348 ... > 16:52:53 < zygoloid> slyfox: i'm no ghc expert but it looks like HEAP_ALLOCED_GC(q) > is returning true for a FUN_STATIC closure > 17:18:43 < zygoloid> try: p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p) > 17:19:12 < slyfox> (gdb) p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p) > 17:19:12 < slyfox> $1 = 0 > 17:19:40 < zygoloid> i /think/ that means the mblock_cache is broken > 17:22:45 < zygoloid> i can't help further. however i am suspicious that you seem to have pointers with similar-looking low 33 > bits and different high 4 bits, and it looks like such pointers get put into the same bucket in > mblock_cache. ... > 17:36:16 < zygoloid> slyfox: try changing the definition of MbcCacheLine to StgWord64, see if that helps > 17:36:31 < zygoloid> that's in includes/rts/storage/MBlock.h And it helped! ] [Fixing link failure of compiler on ia64 ('-Wl,' prefixed value passed directly to ld) Sergei Trofimovich **20100708180943 Ignore-this: ced99785e1f870ee97e5bec658e2504f /usr/bin/ld -Wl,--relax -r -o dist-stage1/build/HSghc-6.10.4.o \ dist-stage1/build/BasicTypes.o dist-stage1/build/DataCon.o ... /usr/bin/ld: unrecognized option '-Wl,--relax' If we just drop '-Wl,' part it will not help as '-r' and '--relax' are incompatible. Looks like '-Wl,--relax' was skipped by earlier binutils' ld as unknown option. Removing ia64 specific path. ] [LLVM: Allow getelementptr to use LlvmVar for indexes. David Terei **20100712152529 Ignore-this: 9e158d9b89a86bca8abf11d082328278 ] [Move all the warning workarounds to one place Ian Lynagh **20100710161723] [xhtml is now warning-free Ian Lynagh **20100710144635] [Move a bit of build system code Ian Lynagh **20100709224534] [adapt to the new async exceptions API Simon Marlow **20100709125238 Ignore-this: 55d845e40b9daed3575c1479d8dda1d5 ] [quiet some new spewage Simon Marlow **20100709091521 Ignore-this: de7f91976bbc9789e6fd7091f05c25c0 ] [New asynchronous exception control API (ghc parts) Simon Marlow **20100708144851 Ignore-this: 56320c5fc61ae3602d586609387aae22 As discussed on the libraries/haskell-cafe mailing lists http://www.haskell.org/pipermail/libraries/2010-April/013420.html This is a replacement for block/unblock in the asychronous exceptions API to fix a problem whereby a function could unblock asynchronous exceptions even if called within a blocked context. The new terminology is "mask" rather than "block" (to avoid confusion due to overloaded meanings of the latter). In GHC, we changed the names of some primops: blockAsyncExceptions# -> maskAsyncExceptions# unblockAsyncExceptions# -> unmaskAsyncExceptions# asyncExceptionsBlocked# -> getMaskingState# and added one new primop: maskUninterruptible# See the accompanying patch to libraries/base for the API changes. ] [remove outdated comment Simon Marlow **20100708100840 Ignore-this: afb2e9f6fe1f1acda51b0cbdf2637176 ] [remove 'mode: xml' emacs settings (#2208) Simon Marlow **20100708100817 Ignore-this: 3a8d997fb90e01ca88dc47fb95feeba0 ] [typo in comment Simon Marlow **20100616111359 Ignore-this: d3ef9288d6d6b9ab3bacbe09e0d9801c ] [Win32 getProcessElapsedTime: use a higher-resolution time source Simon Marlow **20100708093223 Ignore-this: 821989d4ff7ff2bff40cee71a881521c QueryPerformanceCounter() on Windows gives much better resolution than GetSystemTimeAsFileTime(). ] [alpha: switch handling of 'foreign import wrapper' (FIW) to libffi Sergei Trofimovich **20100708065318 Ignore-this: ddee15876737a6aa7f6dabc8ff79ce0d I tried to build ghc-6.12.3 and found out FIW part of code does not compile anymore. It uses absent functions under #ifdef. Instead of fixing it I just switched to libffi. Result built successfully and passed 'foreign import wrapper' test I wrote for trac ticket #3516. I didn't try to build -HEAD yet, but this patch only removes code, so it should not make -HEAD worse. ] [Reorder the CPP flags so -optP can override the platform defines Ian Lynagh **20100708203523] [Add docs for DatatypeContexts extension Ian Lynagh **20100707230907 Ignore-this: 8158f03b35a2d7442a75fe85d6f1b1c7 ] [Make datatype contexts an extension (on by default) (DatatypeContexts) Ian Lynagh **20100707212529 Ignore-this: 6885ff510a0060610eeeba65122caef5 ] [LLVM: Fix various typos in comments David Terei **20100707220448 Ignore-this: 1ba3e722f150492da2f9d485c5795e80 ] [Handle haddock headers when looking for LANGUAGE/OPTIONS_GHC pragmas Ian Lynagh **20100707120423 Ignore-this: a75aa67690284a6cee3e62c943d4fd01 ] [Make pragState call mkPState, rather than duplicating everything Ian Lynagh **20100706173007 Ignore-this: 61fe24b99dbe7a42efff1a9dd703a75c This also means that extsBitmap gets set, whereas is was just being set to 0 before. ] [LLVM: Add alias type defenitions to LlvmModule. David Terei **20100707142053 Ignore-this: eee6ad5385563ccf08e664d2634a03f2 ] [LLVM: Use packed structure type instead of structure type David Terei **20100707120320 Ignore-this: a06e0359d182291b81cae56993ca385e The regular structure type adds padding to conform to the platform ABI, which causes problems with structures storing doubles under windows since we don't conform to the platform ABI there. So we use packed structures instead now that don't do any padding. ] [Make mkPState and pragState take their arguments in the same order Ian Lynagh **20100706172611] [Remove an out-of-date comment Ian Lynagh **20100706172217 Ignore-this: 710ebd7d2dc01c1b0f1e58a5b6f85701 ] [LLVM: Stop llvm saving stg caller-save regs across C calls David Terei **20100705162629 Ignore-this: 28b4877b31b9358e682e38fc54b88658 This is already handled by the Cmm code generator so LLVM is simply duplicating work. LLVM also doesn't know which ones are actually live so saves them all which causes a fair performance overhead for C calls on x64. We stop llvm saving them across the call by storing undef to them just before the call. ] [LLVM: Add in literal undefined value to binding David Terei **20100705161544 Ignore-this: 95d8361b11584aaeec44c30e76916470 ] [LLVM: Add a literal NULL value to binding David Terei **20100705161308 Ignore-this: 9507b4b12c1157498704a9d1e5860f12 Patch from Erik de Castro Lopo . ] [refactor import declaration support (#2362) Simon Marlow **20100705104557 Ignore-this: ee034ac377078a7e92bfada1907c86a0 ] [Disable dynamic linking optimisations on OS X Simon Marlow **20100705103014 Ignore-this: b04420d3705c51112797758d17b2e40c To improve performance of the RTS when dynamically linked on x86, I previously disabled -fPIC for certain critical modules (the GC, and a few others). However, build reports suggest that the dynamic linker on OS X doesn't like this, so I'm disabling this optimsation on that platform. ] [trac #2362 (full import syntax in ghci) amsay@amsay.net**20100625032632 Ignore-this: a9d0859d84956beb74e27b797431bf9c 'import' syntax is seperate from ':module' syntax ] [Simplify ghc-pkg's Cabal dependencies Ian Lynagh **20100704184155 We no longer support building with a compiler that doesn't come with base 4. ] [Use Cabal to configure the dist-install ghc-pkg; fixes trac #4156 Ian Lynagh **20100704132612] [Remove dead code (standalone deriving flag no longer used in parser) Ian Lynagh **20100701162058] [LLVM: Use the inbounds keyword for getelementptr instructions. David Terei **20100702160511 Ignore-this: 3708e658a4c82b78b1402393f4405541 ] [threadPaused: fix pointer arithmetic Simon Marlow **20100701085046 Ignore-this: b78210e5d978f18ffd235f1c78a55a23 Noticed by Henrique Ferreiro , thanks! ] [LLVM: Change more operations to use getelementptr David Terei **20100701161856 Ignore-this: fb24eb124e203f50680c6fec3ff9fe7d ] [Add the haskell2010 package Simon Marlow **20100630125532 Ignore-this: e9b011313f283a8ff2fcda7d029a01f ] [LLVM: Use getelementptr instruction for a lot of situations David Terei **20100630181157 Ignore-this: 34d314dd8dffad9bdcffdc525261a49d LLVM supports creating pointers in two ways, firstly through pointer arithmetic (by casting between pointers and ints) and secondly using the getelementptr instruction. The second way is preferable as it gives LLVM more information to work with. This patch changes a lot of pointer related code from the first method to the getelementptr method. ] [remove out of date comments; point to the wiki Simon Marlow **20100625100313 Ignore-this: 95f363a373534b9471b1818102ec592d ] [NCG: allocatableRegs is only giving us 8 SSE regs to allocate to benl@ouroborus.net**20100629054321 Ignore-this: b3e0fa0b4ce988a0258dc12261989ee0 ] [LLVM: Use intrinsic functions for pow, sqrt, sin, cos David Terei **20100628182949 Ignore-this: 98a0befaca3fe2b36d710d8ff9f062c4 Instead of calling the C library for these Cmm functions we use intrinsic functions provided by llvm. LLVM will then either create a compile time constant if possible, or use a cpu instruction or as a last resort call the C library. ] [LLVM: Fix test '2047' under linux-x64 David Terei **20100628165256 Ignore-this: 41735d4f431a430db636621650ccd71e ] [LLVM: Fix test 'ffi005' under linux-x64 David Terei **20100628155355 Ignore-this: 841f3142c63cc898ac4c3f89698a837e ] [LLVM: Update to use new fp ops introduced in 2.7 David Terei **20100628144037 Ignore-this: 5dd2e5964e3c039d297ed586841e706b ] [Add noalias and nocapture attributes to pointer stg registers David Terei **20100628115120 Ignore-this: 492a1e723cb3a62498d240d7de92dd7 At the moment this gives a very slight performance boost of around 1 - 2%. Future changes to the generated code though so that pointers are kept as pointers more often instead of being cast to integer types straight away should hopefully improve the benefit this brings. ] [during shutdown, only free the heap if we waited for foreign calls to exit Simon Marlow **20100628090536 Ignore-this: d545384a4f641d701455d08ef1217479 ] [Fix typo in -ddump-pass's document. shelarcy **20100620070759 Ignore-this: f4f1ddb53f147949e948147d89190c37 ] [Add #undefs for posix source symbols when including papi.h dmp@rice.edu**20100624163514 Ignore-this: 8a1cba21b880d12a75a75f7e96882053 Validation fails when validating with PAPI support (i.e. GhcRtsWithPapi = YES in validate.mk). The problem is that the posix symbols are defined by a header included from papi.h. Compilation then fails because these symbols are redefined in PosixSource.h. This patch adds an undefine for the posix symbols after including papi.h and before including PosixSource.h. The #undefines are localized to Papi.c since that is the only case where they are getting defined twice. ] [Use machdepCCOpts in runPhase_MoveBinary; fixes trac #3952 Ian Lynagh **20100625220953] [LLVM: Fix bug with calling tail with empty list David Terei **20100625115729 Ignore-this: 46b4b32c8d92372a2d49794a96fe1613 ] [Fix warnings benl@ouroborus.net**20100624091339 Ignore-this: 5ba4bbd6abb9c9d1fb8c5d21ab73f218 ] [NCG: Comments and formatting only benl@ouroborus.net**20100624083121 Ignore-this: 86002e72c30d06bcc876d8c49f4caa5a ] [NCG: Do the actual reversing of SCCs benl@ouroborus.net**20100624082717 Ignore-this: 12d2027ea118e751fbb48b27126150ef ] [NCG: Fix dumping of graphs in regalloc stats for graph allocator benl@ouroborus.net**20100624082625 Ignore-this: 2b971bc9e0318099a9afb0e0db135730 ] [NCG: Reverse SCCs after each round in the graph allocator benl@ouroborus.net**20100624082437 Ignore-this: f0152e4039d6f16f7b5a99b286538116 ] [NCG: Don't actually complain on unreachable code blocks benl@ouroborus.net**20100624081445 Ignore-this: e7335ae6120917cb858c38c7c6da8e24 ] [NCG: Do explicit check for precondition of computeLiveness benl@ouroborus.net**20100624080747 Ignore-this: e7053c4e5e4c3c746b5ebf016913424a computeLiveness requires the SCCs of blocks to be in reverse dependent order, and if they're not it was silently giving bad liveness info, yielding a bad allocation. Now it complains, loudly. ] [NCG: Fix off-by-one error in realRegSqueeze benl@ouroborus.net**20100623095813 Ignore-this: ab0698686d4c250da8e207f734f8252d ] [NCG: Handle stripping of liveness info from procs with no blocks (like stg_split_marker) benl@ouroborus.net**20100623091209 Ignore-this: c0319b6cc62ec713afe4eb03790406e3 ] [NCG: Emit a warning on unreachable code block instead of panicing benl@ouroborus.net**20100623085002 Ignore-this: d20314b79e3c31e764ed4cd97290c696 ] [NCG: Remember to keep the entry block first when erasing liveness info Ben.Lippmeier@anu.edu.au**20090917104429 Ignore-this: 1b0c1df19d622858d50ffb6a01f2cef0 ] [NCG: Refactor representation of code with liveness info Ben.Lippmeier@anu.edu.au**20090917090730 Ignore-this: 2aebb3b02ebd92e547c5abad9feb0f0d * I've pushed the SPILL and RELOAD instrs down into the LiveInstr type to make them easier to work with. * When the graph allocator does a spill cycle it now just re-annotates the LiveCmmTops instead of converting them to NatCmmTops and back. * This saves working out the SCCS again, and avoids rewriting the SPILL and RELOAD meta instructions into real machine instructions. ] [NCG: Add sanity checking to linear allocator Ben.Lippmeier@anu.edu.au**20090917090335 Ignore-this: 5a442be8b5087d04bc8b58dffa9ea080 If there are are unreachable basic blocks in the native code then the linear allocator might loop. Detect this case and panic instead. ] [NCG: Refactor LiveCmmTop to hold a list of SCCs instead of abusing ListGraph Ben.Lippmeier@anu.edu.au**20090917060332 Ignore-this: 3fec8d69ed0f760e53a202f873d5d9cb ] [NCG: Allow the liveness map in a LiveInfo to be Nothing Ben.Lippmeier@anu.edu.au**20090917043937 Ignore-this: 5f82422d54d1b0ffc0589eb7e82fb7a4 ] [NCG: Also show the result of applying coalesings with -ddump-asm-regalloc-stages Ben.Lippmeier.anu.edu.au**20090917034427 Ignore-this: 76bd6d5ca43adb2167cb25832cbaa80b ] [Fix panic when running "ghc -H"; trac #3364 Ian Lynagh **20100624234011 The problem is that showing SDoc's looks at the static flags global variables, but those are panics while we are parsing the static flags. We work around this by explicitly using a fixed prettyprinter style. ] [Allow for stg registers to have pointer type in llvm BE. David Terei **20100621175839 Ignore-this: fc09b1a8314aef0bde945c77af1124fb Before all the stg registers were simply a bit type or floating point type but now they can be declared to have a pointer type to one of these. This will allow various optimisations in the future in llvm since the type is more accurate. ] [Add support for parameter attributes to the llvm BE binding David Terei **20100624111744 Ignore-this: 77f3c0c7bf8f81c4a154dc835ae7bcba These allow annotations of the code produced by the backend which should bring some perforamnce gains. At the moment the attributes aren't being used though. ] [Cast some more nats to StgWord to be on the safe side Simon Marlow **20100624105700 Ignore-this: e6176683856f9872fdeb2358bb065bb8 And add a comment about the dangers of int overflow ] [comments only Simon Marlow **20100624105105 Ignore-this: fc8f762f4c3a5ffca2f8da2bc63ac2a4 ] [Fix an arithmetic overflow bug causing crashes with multi-GB heaps Simon Marlow **20100624104654 Ignore-this: 67210755aa098740ff5230347be0fd5d ] [Add support for collecting PAPI native events dmp@rice.edu**20100622195953 Ignore-this: 7269f9c4dfb2912a024eb632200fcd1 This patch extends the PAPI support in the RTS to allow collection of native events. PAPI can collect data for native events that are exposed by the hardware beyond the PAPI present events. The native events supported on your hardware can found by using the papi_native_avail tool. The RTS already allows users to specify PAPI preset events from the command line. This patch extends that support to allow users to specify native events. The changes needed are: 1) New option (#) for the RTS PAPI flag for native events. For example, to collect the native event 0x40000000, use ./a.out +RTS -a#0x40000000 -sstderr 2) Update the PAPI_FLAGS struct to store whether the user specified event is a papi preset or a native event 3) Update init_countable_events function to add the native events after parsing the event code and decoding the name using PAPI_event_code_to_name ] [Don't warn about unused bindings with parents in .hs-boot files; trac #3449 Ian Lynagh **20100624110351] [fix the home_imps filter to allow for 'import "this" ' Simon Marlow **20100621125535 Ignore-this: da4e605b0513afc32a4e7caa921a2c76 In the PackageImports extension, import "this" means "import from the current package". ] [Use the standard C wrapper code for the ghc-$version.exe wrapper Ian Lynagh **20100622202859 Ignore-this: 60cd3e6db3afb63e6ba9e2db3b033580 ] [Don't rely on "-packagefoo" working; use "-package foo" instead Ian Lynagh **20100622202547] [Remove unnecessary C #includes Ian Lynagh **20100622172919] [Make the ghci.exe wrapper call the right ghc.exe Ian Lynagh **20100622172247] [More updates to datalayout description in llvm BE David Terei **20100622165339 Ignore-this: b0c604fe7673b0aa7c7064694d574437 ] [Remove LlvmAs phase as the llvm opt tool now handles this phase David Terei **20100622144044 Ignore-this: b9fd8f959702b6af014e2fa654bede3 This phase originally invoked the llvm-as tool that turns a textual llvm assembly file into a bit code file for the rest of llvm to deal with. Now the llvm opt tool can do this itself, so we don't need to use llvm-as anymore. ] [Update datalayout info in llvm BE David Terei **20100622123457 Ignore-this: 89b043d211225dcd819f30549afe1840 ] [Fix handling of float literals in llvm BE David Terei **20100622121642 Ignore-this: a3b5f382ad4b5a426ad4b581664506fa ] [Declare some top level globals to be constant when appropriate David Terei **20100621174954 Ignore-this: 44832f65550d4f995d11c01cc1affef5 This involved removing the old constant handling mechanism which was fairly hard to use. Now being constant or not is simply a property of a global variable instead of a separate type. ] [Reduce the number of passes over the cmm in llvm BE David Terei **20100621125220 Ignore-this: cb2f4e54e8d0f982d5087fbeee35c73c ] [Fix negate op not working for -0 in llvm backend David Terei **20100621123606 Ignore-this: c5d76e5cffa781fed074137851b1347f ] [ROLLBACK: picCCOpts: -dynamic should not entail -optc-fPIC Simon Marlow **20100621100409 Ignore-this: f2fac7df33d3919199befc59bd455414 and add a comment to explain why it was wrong. This fixes the dyn test failures that sprang up recently. ] [Check files are really created in libffi Ian Lynagh **20100620163724 when we think that the libffi build creates them, so they just depend on the libffi build stamp. ] [Improve the missing-import-list warning Ian Lynagh **20100620124320 Ignore-this: 551e5fdf2dfb56b49d249e0cebaa6115 ] [Tweak missing-import-list warning Ian Lynagh **20100620122622 Ignore-this: 360cdf59ae13d66ded181129325506c4 ] [trac #1789 (warnings for missing import lists) amsay@amsay.net**20100618150649 Ignore-this: b0b0b1e048fbca0817c1e6fade1153fa ] [Refix docs for sizeofByteArray#/sizeofMutableByteArray# (#3800) Ian Lynagh **20100620103749] [Remove some old commented out code Ian Lynagh **20100620000459] [SET_ARR_HDR's last argument is now a number of bytes, rather than words Ian Lynagh **20100619235214 This avoids unnecessary work and potential loss of information ] [Replace an (incorrect) bytes-to-words calculation with ROUNDUP_BYTES_TO_WDS Ian Lynagh **20100619234310] [FIX #38000 Store StgArrWords payload size in bytes Antoine Latter **20100101183346 Ignore-this: 7bf3ab4fc080c46311fc10b179361bb6 ] [Add win32 datalayout support to llvm backend David Terei **20100618131733 Ignore-this: 4b7bffaa8ef38c628ab852c1a6c1c009 ] [Remove unused 'ddump-opt-llvm' flag David Terei **20100618101237 Ignore-this: f78467496d986897e49d82646ee2907e ] [generate "movl lbl(%reg1), %reg2" instructions, better codegen for -fPIC Simon Marlow **20100618082258 Ignore-this: a25567ebff9f575303ddc8f2deafebbf ] [joinToTargets: fix a case of panic "handleComponent cyclic" Simon Marlow **20100618082147 Ignore-this: 765baeefbb5a41724004acd92405cecc ] [comment typo Simon Marlow **20100618082102 Ignore-this: e495610b7dd5ec30b02938638b56cb7 ] [Add support of TNTC to llvm backend David Terei **20100618093205 Ignore-this: 2c27d21668374a5b0d5e844882c69439 We do this through a gnu as feature called subsections, where you can put data/code into a numbered subsection and those subsections will be joined together in descending order by gas at compile time. ] [Don't automatically insert a -fvia-C flag in an unregisterised compiler Ian Lynagh **20100617190901 Ignore-this: eb25a9a338fade9e17c153da7c5f27e9 The default object mode is already HscC, so it's unnecessary, and -fvia-C generates a deprecated flag warning now. ] [In PosixSource.h, conditionally define things based on platform Ian Lynagh **20100617174912 This may not be ideal, but it should get GHC building on all platforms again. ] [disable -fPIC for the GC for performance reasons Simon Marlow **20100617140025 Ignore-this: c7c152bbff71ef7891eaee8ff39fc281 see comment for details ] [picCCOpts: -dynamic should not entail -optc-fPIC Simon Marlow **20100617115259 Ignore-this: d71e42bd56e4bd107d2c431b801855e5 ] [Make getAllocations() visible Simon Marlow **20100617113259 Ignore-this: 1b7fb38a01358c0acbe8987df07d23f2 ] [Fix the symbol visibility pragmas Simon Marlow **20100617105758 Ignore-this: 76552500865473a1dbebbc1cc2def9f0 ] [pick up changes to $(GhcStage1HcOpts) without re-configuring the ghc package Simon Marlow **20100616124718 Ignore-this: afb56d5560c813051285607fefb15493 ] [Fix bindisttest Makefile Ian Lynagh **20100616205611 Ignore-this: 39cd352152422f378572fc3859c5a377 ] [Remove some more unused make variables Ian Lynagh **20100616180519] [Convert some more variable names to FOO_CMD, for consistency Ian Lynagh **20100616175916] [Rename some variables from FOO to FOO_CMD Ian Lynagh **20100616161108 This fixes a problem with commands like gzip, where if $GZIP is exported in the environment, then when make runs a command it'll put the Makefile variable's value in the environment. But gzip treats $GZIP as arguments for itself, so when we run gzip it thinks we're giving it "gzip" as an argument. ] [Make the "show" target work anywhere in the build tree Ian Lynagh **20100616122910 Ignore-this: 299d40cbe16112accd9f14e56fa12158 ] [Change ghc-pwd's license to a string Cabal recognises Ian Lynagh **20100615204015 Ignore-this: c935b6ad7f605aab0168997a90b40fc6 ] [fix warning Simon Marlow **20100604205933 Ignore-this: 2aaa4ed6a8b9ae1e39adc4696aaf14a3 ] [--install-signal-handles=no does not affect the timer signal (#1908) Simon Marlow **20100527214627 Ignore-this: b0c51f1abdb159dc360662485095a11a ] [Small optimisation: allocate nursery blocks contiguously Simon Marlow **20100509194928 Ignore-this: e650e99e9ea9493d2efb245d565beef4 This lets automatic prefetching work better, for a tiny performance boost ] [fix -fforce-recomp setting: module is PrimOp, not PrimOps Simon Marlow **20100507084507 Ignore-this: f76e0d9b643682ec0e8fb7d91afdea68 ] [it should be an error to use relative directories (#4134) Simon Marlow **20100615151740 Ignore-this: 2068021701832e018ca41b22877921d5 ] [missing include-dirs or library-dirs is only a warning now (#4104) Simon Marlow **20100615151702 Ignore-this: e3114123cef147bbd28ccb64581a1afb ] [fix #3822: desugaring case command in arrow notation Ross Paterson **20100615225110 Ignore-this: 477d6c460b4174b94b4cd113fa5b9d19 Get the set of free variables from the generated case expression: includes variables in the guards and decls that were missed before, and is also a bit simpler. ] [Deprecate the -fvia-C flag; trac #3232 Ian Lynagh **20100615151836 Ignore-this: c2452b2648bf7e44546465c1b964fce ] [Avoid using the new ~~ perl operator in the mangler Ian Lynagh **20100615151236 Ignore-this: 709a7ba4e514b1596841b3ba7e5c6cc ] [stmAddInvariantToCheck: add missing init of invariant->lock (#4057) Simon Marlow **20100615123643 Ignore-this: 3b132547fa934cecf71a846db2a5f70e ] [Add new LLVM code generator to GHC. (Version 2) David Terei **20100615094714 Ignore-this: 4dd2fe5854b64a3f0339d484fd5c238 This was done as part of an honours thesis at UNSW, the paper describing the work and results can be found at: http://www.cse.unsw.edu.au/~pls/thesis/davidt-thesis.pdf A Homepage for the backend can be found at: http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM Quick summary of performance is that for the 'nofib' benchmark suite, runtimes are within 5% slower than the NCG and generally better than the C code generator. For some code though, such as the DPH projects benchmark, the LLVM code generator outperforms the NCG and C code generator by about a 25% reduction in run times. ] [Fix Trac #4127: build GlobalRdrEnv in GHCi correctly simonpj@microsoft.com**20100615070626 Ignore-this: d907e3bfa7882878cea0af172aaf6e84 GHCi was building its GlobalRdrEnv wrongly, so that the gre_par field was bogus. That in turn fooled the renamer. The fix is easy: use the right function! Namely, call RnNames.gresFromAvail rather than availsToNameSet. ] [Comments, and improvement to pretty-printing of HsGroup simonpj@microsoft.com**20100615070409 Ignore-this: ec8358f2485370b20226a97ec84e9024 ] [Don't reverse bindings in rnMethodBinds (fix Trac #4126) simonpj@microsoft.com**20100614163935 Ignore-this: a6ffbb5af6f51b142ed0aeae8ee5e3a9 ] [Fix Trac #4120: generate a proper coercion when unifying forall types simonpj@microsoft.com**20100614134311 Ignore-this: 601592bb505305f1954cbe730f168da4 This was just a blatant omission, which hasn't come up before. Easily fixed, happily. ] [Use mkFunTy to ensure that invariants are respected simonpj@microsoft.com**20100614134159 Ignore-this: 67dcada7a4e8d9927581cd77af71b6f ] [Remove redundant debug code simonpj@microsoft.com**20100601154151 Ignore-this: e6ff11c04c631cf6aac73788cbcf02b5 ] [Fix Trac #4099: better error message for type functions simonpj@microsoft.com**20100531140413 Ignore-this: 3f53ca98cf770577818b9c0937482577 Now we only want about "T is a type function and might not be injective" when matchin (T x) against (T y), which is the case that is really confusing. ] [Gruesome fix in CorePrep to fix embarassing Trac #4121 simonpj@microsoft.com**20100614132726 Ignore-this: fe82d15474afaac3e6133adfd7a7e055 This is a long-lurking bug that has been flushed into the open by other arity-related changes. There's a long comment Note [CafInfo and floating] to explain. I really hate the contortions we have to do through to keep correct CafRef information on top-level binders. The Right Thing, I believe, is to compute CAF and arity information later, and merge it into the interface-file information when the latter is generated. But for now, this hackily fixes the problem. ] [Fix a bug in CorePrep that meant output invariants not satisfied simonpj@microsoft.com**20100531150013 Ignore-this: d34eb36d8877d3caf1cf2b20de426abd In cpePair I did things in the wrong order so that something that should have been a CprRhs wasn't. Result: a crash in CoreToStg. Fix is easy, and I added more informative type signatures too. ] [Robustify the treatement of DFunUnfolding simonpj@microsoft.com**20100531145332 Ignore-this: 8f5506ada4d89f6ab8ad1e8c3ffb09ba See Note [DFun unfoldings] in CoreSyn. The issue here is that you can't tell how many dictionary arguments a DFun needs just from looking at the Arity of the DFun Id: if the dictionary is represented by a newtype the arity might include the dictionary and value arguments of the (single) method. So we need to record the number of arguments need by the DFun in the DFunUnfolding itself. Details in Note [DFun unfoldings] in CoreSyn ] [Fix spelling in comment simonpj@microsoft.com**20100614132259 Ignore-this: bbf0d55f2e5f10ef9c74592c12f9201c ] [Update docs on view patterns simonpj@microsoft.com**20100614074801 Ignore-this: 8617b9078800d4942d71f142a5b6c831 ] [Fix printing of splices; part of #4124 Ian Lynagh **20100613154838 Just putting parens around non-atomic expressions isn't sufficient for splices, as only the $x and $(e) forms are valid input. ] [In ghci, catch IO exceptions when calling canonicalizePath Ian Lynagh **20100613134627 We now get an exception if the path doesn't exist ] [Whitespace only Ian Lynagh **20100612213119] [Whitespace only Ian Lynagh **20100612165450] [Update ghci example output in user guide; patch from YitzGale in #4111 Ian Lynagh **20100612162250] [Fix #4131 missing UNTAG_CLOSURE in messageBlackHole() benl@ouroborus.net**20100611044614] [messageBlackHole: fix deadlock bug caused by a missing 'volatile' Simon Marlow **20100610080636 Ignore-this: 3cda3054bb45408aa9bd2d794b69c938 ] [Pass --no-tmp-comp-dir to Haddock (see comment) Simon Marlow **20100604083214 Ignore-this: bfa4d74038637bd149f4d878b4eb8a87 ] [Track changes to DPH libs Roman Leshchinskiy **20100607052903 Ignore-this: 4dbc3f8418af3e74b3fc4f9a9dfe7764 ] [Track changes to DPH libs Roman Leshchinskiy **20100607012642 Ignore-this: 5d4e498171a3c57ab02621bfaea82cff ] [In ghc-pkg, send warnings to stderr Ian Lynagh **20100606161726 Ignore-this: 56927d13b5e1c1ce2752734f0f9b665b ] [Re-add newlines to enable layout for multi-line input. Ian Lynagh **20100602180737 Patch from Adam Vogt Partial fix for #3984 ] [Don't use unnecessary parens when printing types (Fix Trac 4107) simonpj@microsoft.com**20100604110143 Ignore-this: a833714ab13013c4345b222f4e87db1d f :: Eq a => a -> a rather than f :: (Eq a) => a -> a ] [Track DPH library changes Roman Leshchinskiy **20100604005728 Ignore-this: 32bc2fbea6ad975e89545d4c42fd7c30 ] [fix --source-entity option passed to Haddock: we needed to escape a # Simon Marlow **20100603125459 Ignore-this: d52ae6188b510c482bcebb23f0e553ae ] [__stg_EAGER_BLACKHOLE_INFO -> __stg_EAGER_BLACKHOLE_info (#4106) Simon Marlow **20100602091419 Ignore-this: 293315ac8f86fd366b8d61992ecc7961 ] [Add xhtml package (a new dependency of Haddock; not installed/shipped) Simon Marlow **20100602090101 Ignore-this: af0ac8b91abe98f7fdb624ea0a4dee20 ] [Use UserInterrupt rather than our own Interrupted exception (#4100) Simon Marlow **20100602082345 Ignore-this: 1909acf2f452593138b9f85024711714 ] [Add the global package DB to ghc --info (#4103) Simon Marlow **20100602082233 Ignore-this: fd5c0e207e70eb0f62606c45dc5b8124 ] [rts/sm/GC.c: resize_generations(): Remove unneeded check of number of generations. Marco Túlio Gontijo e Silva **20100528115612 Ignore-this: 6f1bea62917c01c7adac636146132c97 This "if" is inside another "if" which checks for RtsFlags.GcFlags.generations > 1, so testing this again is redundant, assuming the number of generations won't change during program execution. ] [rts/sm/BlockAlloc.c: Small comment correction. Marco Túlio Gontijo e Silva **20100526205839 Ignore-this: bd2fcd4597cc872d80b0e2eeb1c3998a ] [rts/sm/GC.c: Annotate constants. Marco Túlio Gontijo e Silva **20100526205707 Ignore-this: f232edb89383564d759ed890a18f602f ] [includes/rts/storage/GC.h: generation_: n_words: Improve comment. Marco Túlio Gontijo e Silva **20100526204615 Ignore-this: f5d5feefa8f7b552303978f1804fea23 ] [Add PPC_RELOC_LOCAL_SECTDIFF support; patch from PHO in #3654 Ian Lynagh **20100601204211 Ignore-this: 51293b7041cdce3ce7619ef11cf7ceb ] [powerpc-apple-darwin now supports shared libs Ian Lynagh **20100601173325] [PIC support for PowerPC pho@cielonegro.org**20100508143900 Ignore-this: 3673859a305398c4acae3f4d7c997615 PPC.CodeGen.getRegister was not properly handling PicBaseReg. It seems working with this patch, but I'm not sure this change is correct. ] [Vectoriser: only treat a function as scalar if it actually computes something Roman Leshchinskiy **20100601045630 Ignore-this: e5d99a6ddb62052e3520094a5af47552 ] [Add a release notes file for 6.14.1 Ian Lynagh **20100530171117 Ignore-this: 1941e6d3d1f4051b69ca2f17a1cf84d6 ] [Check dblatex actually creates the files we tell it to Ian Lynagh **20100530171043 Ignore-this: ccc72caea2313be05cbac59bb54c0603 If it fails, it still exits successfully. ] [Add darwin to the list of OSes for which we use mmap Ian Lynagh **20100529145016 Ignore-this: a86d12a3334aaaafc86f7af9dbb0a7ae Patch from Barney Stratford ] [Simplify the CPP logic in rts/Linker.c Ian Lynagh **20100529144929 Ignore-this: 1288f5b752cc1ab8b1c90cfd0ecfdf68 ] [Fix validate on OS X Ian Lynagh **20100529154726] [OS X x86_64 fix from Barney Stratford Ian Lynagh **20100529122440] [OS X 64 installer fixes from Barney Stratford Ian Lynagh **20100528234935] [fix warning Simon Marlow **20100525155812 Ignore-this: f34eee3fe3d89579fd8d381c91ced750 ] [Fix doc bugs (#4071) Simon Marlow **20100525155728 Ignore-this: aa25be196de567de360075022a1942f7 ] [Make sparks into weak pointers (#2185) Simon Marlow **20100525150435 Ignore-this: feea0bb5006007b82c932bc3006124d7 The new strategies library (parallel-2.0+, preferably 2.2+) is now required for parallel programming, otherwise parallelism will be lost. ] [If you say 'make' or 'make stage=2' here, pretend we're in the ghc dir Simon Marlow **20100525085301 Ignore-this: 78b740337aa460915c812cbbcdae5321 ] [Another attempt to get these #defines right Simon Marlow **20100525154313 Ignore-this: 460ca0c47d81cd25eae6542114f67899 Apparently on Solaris it is an error to omit _ISOC99_SOURCE when using _POSIX_C_SOURCE==200112L. ] [Add configure flags for the location of GMP includes/library; fixes #4022 Ian Lynagh **20100525221616 Ignore-this: fc3060caf995d07274ec975eeefbdf3e ] [Refactor pretty printing of TyThings to fix Trac #4015 simonpj@microsoft.com**20100525153126 Ignore-this: 8f15053b7554f62caa84201d2e4976d2 ] [When haddocking, we need the dependencies to have been built Ian Lynagh **20100525145830 as haddock loads the .hi files with the GHC API. ] [Fix profiling output; spotted by jlouis Ian Lynagh **20100525111217 We were outputing the number of words allocated in a column titled "bytes". ] [Improve printing of TyThings; fixes Trac #4087 simonpj@microsoft.com**20100525114045 Ignore-this: da2a757a533454bba80b9b77cc5a771 ] [Spelling in comments simonpj@microsoft.com**20100525114001 Ignore-this: 270f3da655e526cf04e27db7a01e29c0 ] [Refactor (again) the handling of default methods simonpj@microsoft.com**20100525113910 Ignore-this: 6686f6cdb878d57abf6b49fec64fcbb1 This patch fixes Trac #4056, by a) tidying up the treatment of default method names b) removing the 'module' argument to newTopSrcBinder The details aren't that interesting, but the result is much tidier. The original bug was a 'nameModule' panic, caused by trying to find the module of a top-level name. But TH quotes generate Internal top-level names that don't have a module, and that is generally a good thing. Fixing that in turn led to the default-method refactoring, which also makes the Name for a default method be handled in the same way as other derived names, generated in BuildTyCl via a call newImplicitBinder. Hurrah. ] [Don't do SpecConstr on NOINLINE things (Trac #4064) simonpj@microsoft.com**20100525112807 Ignore-this: 452be0a2cef0042fb67275c2827b5f72 Since the RULE from specialising gets the same Activation as the inlining for the Id itself there's no point in specialising a NOINLINE thing, because the rule will be permanently switched off. See Note [Transfer activation] in SpecConstr and Note [Auto-specialisation and RULES] in Specialise. ] [Change our #defines to work on FreeBSD too Simon Marlow **20100524105828 Ignore-this: b23ede46211e67859206c0ec57d6a86f With glibc, things like _POSIX_C_SOURCE and _ISOC99_SOURCE are additive, but on FreeBSD they are mutually exclusive. However, it turns out we only need to define _POSIX_C_SOURCE and _XOPEN_SOURCE to get all the C99 stuff we need too, so there's no need for any #ifdefs. Submitted by: Gabor PALI ] [Add a missing UNTAG_CLOSURE, causing bus errors on Sparc Simon Marlow **20100524105547 Ignore-this: a590b5391d6f05d50c8c088456c3c166 We just about got away with this on x86 which isn't alignment-sensitive. The result of the memory load is compared against a few different values, but there is a fallback case that happened to be the right thing when the pointer was tagged. A good bug to find, nonetheless. ] [Add wiki links Simon Marlow **20100520095953 Ignore-this: c22f126cde166e6207922b2eb51d29e3 ] [the 'stage=0' trick to disable all compiler builds stopped working; fix it Simon Marlow **20100520104455 Ignore-this: bb6fae9056471612c8dbf06916188c33 ] [Comments and formatting only benl@ouroborus.net**20100524014021 Ignore-this: 64579c38154728b632e358bec751cc0b ] [Core prettyprinter fixes. Patch from Tim Chevalier. Fixes #4085 Ian Lynagh **20100522225048] [Correct install-name for dynamic Darwin rts pho@cielonegro.org**20100508151155 Ignore-this: 6d31716c8c113dcb46e9cb925c4201df ] [Fix the RTS debug_p build Ian Lynagh **20100522163127] [Unset $CFLAGS for "GNU non-executable stack" configure test; fixes #3889 Ian Lynagh **20100521165005 With gcc 4.4 we get Error: can't resolve `.note.GNU-stack' {.note.GNU-stack section} - `.Ltext0' {.text section} when running gcc with the -g flag. To work around this we unset CFLAGS when running the test. ] [Don't run "set -o igncr" before configuring libffi Ian Lynagh **20100520162918 Ignore-this: 489fa94df23f2adf4ff63c8ede2c0794 It used to make the build work on cygwin, but now it breaks it instead: config.status: creating include/Makefile gawk: ./confLqjohp/subs.awk:1: BEGIN {\r gawk: ./confLqjohp/subs.awk:1: ^ backslash not last character on line config.status: error: could not create include/Makefile make[2]: *** [libffi/stamp.ffi.configure-shared] Error 1 make[1]: *** [all] Error 2 ] [Stop passing -Wl,-macosx_version_min to gcc Ian Lynagh **20100520154003 Fixes a build failure on OS X 10.6. When linking rts/dist/build/libHSrts-ghc6.13.20100519.dylib we got ld: symbol dyld_stub_binding_helper not defined (usually in crt1.o/dylib1.o/bundle1.o) collect2: ld returned 1 exit status ] [Fix build on FreeBSD; patch from Gabor PALI Ian Lynagh **20100519140552] [Fix package shadowing order (#4072) Simon Marlow **20100519104617 Ignore-this: 26ea5e4bb5dff18618b807a54c7d6ebb Later packages are supposed to shadow earlier ones in the stack, unless the ordering is overriden with -package-id flags. Unfortunately an earlier fix for something else had sorted the list of packages so that it was in lexicographic order by installedPackageId, and sadly our test (cabal/shadow) didn't pick this up because the lexicographic ordering happened to work for the test. I've now fixed the test so it tries both orderings. ] [Set more env variables when configuring libffi Ian Lynagh **20100518185014 We now tell it where to find ld, nm and ar ] [Set the location of ar to be the in-tree ar on Windows Ian Lynagh **20100518181556] [Change another / to to avoid building paths containing \/ Ian Lynagh **20100518172015 This will hopefully fix #2889. ] [Fix #4074 (I hope). Simon Marlow **20100518113214 Ignore-this: 73cd70f5bc6f5add5247b61985c03fc1 1. allow multiple threads to call startTimer()/stopTimer() pairs 2. disable the timer around fork() in forkProcess() A corresponding change to the process package is required. ] [we don't have a gcc-lib in LIB_DIR any more Simon Marlow **20100401102351 Ignore-this: f41acd2d8f8e6763aa8bd57a0b44a7e4 ] [In validate, use gmake if available; based on a patch from Gabor PALI Ian Lynagh **20100517200654] [Remove duplicate "./configure --help" output; fixes #4075 Ian Lynagh **20100516141206] [Update various 'sh boot's to 'perl boot' Ian Lynagh **20100516122609 Spotted by Marco Túlio Gontijo e Silva ] [add missing initialisation for eventBufMutex Simon Marlow **20100514094943 Ignore-this: 7f75594a8cb54fbec5aebd46bb959f45 ] [Undo part of #4003 patch Simon Marlow **20100513142017 Ignore-this: cb65db86a38a7e5ccee9f779e489d104 We still need the workaround for when compiling HEAD with 6.12.2 ] [Fix makefile loop (#4050) pho@cielonegro.org**20100507140707 Ignore-this: 3a1cb13d0600977e74d17ac26cbef83d The libtool creates "libffi.dylib" and "libffi.5.dylib" but not "libffi.5.0.9.dylib". Having it in libffi_DYNAMIC_LIBS causes an infinite makefile loop. ] [fix !TABLES_NEXT_TO_CODE Simon Marlow **20100510151934 Ignore-this: fccb859b114bef1c3122c98e60af51 ] [looksLikeModuleName: allow apostrophe in module names (#4051) Simon Marlow **20100510094741 Ignore-this: df9348f3ba90608bec57257b47672985 ] [add the proper library dependencies for GhcProfiled=YES Simon Marlow **20100506122118 Ignore-this: 6236993aa308ab5b5e1e5ea5f65982a ] [Fix Trac #4003: fix the knot-tying in checkHiBootIface simonpj@microsoft.com**20100511075026 Ignore-this: a9ce2a318386fdc8782848df84592002 I had incorrectly "optimised" checkHiBootIface so that it forgot to update the "knot-tied" type environment. This patch fixes the HEAD ] [Re-engineer the derived Ord instance generation code (fix Trac #4019) simonpj@microsoft.com**20100510133333 Ignore-this: 8fe46e4dad27fbee211a7928acf372c2 As well as fixing #4019, I rejigged the way that Ord instances are generated, which should make them faster in general. See the Note [Generating Ord instances]. I tried to measure the performance difference from this change, but the #4019 fix only removes one conditional branch per iteration, and I couldn't measure a consistent improvement. But still, tihs is better than before. ] [Make arity of INLINE things consistent simonpj@microsoft.com**20100510133005 Ignore-this: 15e7abf803d1dcb3f4ca760d2d939d0d We eta-expand things with INLINE pragmas; see Note [Eta-expanding INLINE things]. But I eta-expanded it the wrong amount when the function was overloaded. Ooops. ] [Compacting GC fix, we forgot to thread the new bq field of StgTSO. Simon Marlow **20100510082325 Ignore-this: a079c8446e2ad53efff6fd95d0f3ac80 ] [Add version constraints for the boot packages; fixes trac #3852 Ian Lynagh **20100509175051 When using the bootstrapping compiler, we now explicitly constrain the version of boot packages (Cabal, extensible-exceptions, etc) to the in-tree version, so that the build system is less fragile should the user have a newer version installed for the bootstrapping compiler. ] [Don't include inter-package dependencies when compiling with stage 0; #4031 Ian Lynagh **20100509130511 This fixes a problem when building with GHC 6.12 on Windows, where dependencies on stage 0 (bootstrapping compiler) packages have absolute paths c:/ghc/..., and make gets confused by the colon. ] [Add a ghc.mk for bindisttest/ Ian Lynagh **20100508223911] [Move some make variables around so they are available when cleaning Ian Lynagh **20100508212405] [Optimise checkremove a bit Ian Lynagh **20100508202006] [Improve the bindisttest Makefile Ian Lynagh **20100508195450] [Add tools to test that cleaning works properly Ian Lynagh **20100508194105] [Tweak the ghc-pkg finding code Ian Lynagh **20100508125815 It now understand the ghc-stage[123] names we use in-tree, and it won't go looking for any old ghc-pkg if it can't find the one that matches ghc. ] [Add a way to show what cleaning would be done, without actually doing it Ian Lynagh **20100508122438] [Tidy up the "rm" flags in the build system Ian Lynagh **20100508115745] [Fix crash in nested callbacks (#4038) Simon Marlow **20100507093222 Ignore-this: cade85e361534ce711865a4820276388 Broken by "Split part of the Task struct into a separate struct InCall". ] [Add $(GhcDynamic) knob, set to YES to get stage2 linked with -dynamic Simon Marlow **20100428205241 Ignore-this: 1db8bccf92099785ecac39aebd27c92d Default currently NO. Validate passed with GhcDynamic=YES on x86/Linux here. The compiler is currently slower on x86 when linked -dynamic, because the GC inner loop has been adversely affected by -fPIC, I'm looking into how to fix it. ] [omit "dyn" from the way appended to the __stginit label Simon Marlow **20100428204914 Ignore-this: 14183f3defa9f2bde68fda6729b740bc When GHCi is linked dynamically, we still want to be able to load non-dynamic object files. ] [improvements to findPtr(), a neat hack for browsing the heap in gdb Simon Marlow **20100506115427 Ignore-this: ac57785bb3e13b97a5945f753f068738 ] [Fix +RTS -G1 Simon Marlow **20100506110739 Ignore-this: 86a5de39a94d3331a4ee1213f82be497 ] [Enable the "redundant specialise pragmas" warning; fixes trac #3855 Ian Lynagh **20100506175351] [Find the correct external ids when there's a wrapper simonpj@microsoft.com**20100506164135 Ignore-this: 636266407b174b05b2b8646cc73062c0 We were failing to externalise the wrapper id for a function that had one. ] [Add a comment about pattern coercions simonpj@microsoft.com**20100506164027 Ignore-this: 17428089f3df439f65d892e23e8ed61a ] [Comments only simonpj@microsoft.com**20100506163829 Ignore-this: 169167b6463873ab173cc5750c5be469 ] [Make a missing name in mkUsageInfo into a panic simonpj@microsoft.com**20100506163813 Ignore-this: b82ff1b8bf89f74f146db7cb5cc4c4d7 We really want to know about this! ] [Refactoring of hsXxxBinders simonpj@microsoft.com**20100506163737 Ignore-this: 97c6667625262b160f9746f7bea1c980 This patch moves various functions that extract the binders from a HsTyClDecl, HsForeignDecl etc into HsUtils, and gives them consistent names. ] [Fix Trac #3966: warn about useless UNPACK pragmas simonpj@microsoft.com**20100506163337 Ignore-this: 5beb24b686eda6113b614dfac8490df1 Warning about useless UNPACK pragmas wasn't as easy as I thought. I did quite a bit of refactoring, which improved the code by refining the types somewhat. In particular notice that in DataCon, we have dcStrictMarks :: [HsBang] dcRepStrictness :: [StrictnessMarks] The former relates to the *source-code* annotation, the latter to GHC's representation choice. ] [Make tcg_dus behave more sanely; fixes a mkUsageInfo panic simonpj@microsoft.com**20100506162719 Ignore-this: d000bca15b0e127e297378ded1bfb81b The tcg_dus field used to contain *uses* of type and class decls, but not *defs*. That was inconsistent, and it really went wrong for Template Haskell bracket. What happened was that foo = [d| data A = A f :: A -> A f x = x |] would find a "use" of A when processing the top level of the module, which in turn led to a mkUsageInfo panic in MkIface. The cause was the fact that the tcg_dus for the nested quote didn't have defs for A. ] [Add a HsExplicitFlag to SpliceDecl, to improve Trac #4042 simonpj@microsoft.com**20100506161523 Ignore-this: e4e563bac2fd831cc9e94612f5b4fa9d The issue here is that g :: A -> A f data A = A is treated as if you'd written $(f); that is the call of f is a top-level Template Haskell splice. This patch makes sure that we *first* check the -XTemplateHaskellFlag and bleat about a parse error if it's off. Othewise we get strange seeing "A is out of scope" errors. ] [Change an assert to a warn simonpj@microsoft.com**20100506161111 Ignore-this: 739a4fb4c7940376b0f2c8ad52a1966c This is in the constraint simplifier which I'm about to rewrite, so I'm hoping the assert isn't fatal! ] [Tidy up debug print a little simonpj@microsoft.com**20100506161027 Ignore-this: bd5492878e06bee1cddcbb3fc4df66d8 ] [Remove useless UNPACK pragmas simonpj@microsoft.com**20100506161012 Ignore-this: 3e5ab1a7cf58107034412a798bc214e5 ] [Add WARNM2 macro, plus some refactoring simonpj@microsoft.com**20100506160808 Ignore-this: 2ab4f1f0b5d94be683036e77aec09255 ] [Use -Wwarn for the binary package, becuase it has redundant UNPACK pragmas simonpj@microsoft.com**20100506160750 Ignore-this: cf0d3a11473e28bfce9602e716e69a5f ] [Fix Trac #3966: warn about unused UNPACK pragmas simonpj@microsoft.com**20100409201812 Ignore-this: c96412596b39c918b5fb9b3c39ce2119 ] [Fix Trac #3953: fail earlier when using a bogus quasiquoter simonpj@microsoft.com**20100409201748 Ignore-this: ef48e39aa932caed538643985234f043 ] [Fix Trac #3965: tighten conditions when deriving Data simonpj@microsoft.com**20100409184420 Ignore-this: 96f7d7d2da11565d26b465d7d0497ac9 It's tricky to set up the context for a Data instance. I got it wrong once, and fixed it -- hence the "extra_constraints" in TcDeriv.inferConstraints. But it still wasn't right! The tricky bit is that dataCast1 is only generated when T :: *->*, and dataCast2 when T :: *->*->*. (See the code in TcGenDeriv for dataCastX. ] [Fix Trac #3964: view patterns in DsArrows simonpj@microsoft.com**20100409165557 Ignore-this: d823c182831d5e2e592e995b16180e2f Just a missing case; I've eliminated the catch-all so that we get a warning next time we extend HsPat ] [Fix Trac #3955: renamer and type variables simonpj@microsoft.com**20100409163710 Ignore-this: bd5ec64d76c0f583bf5f224792bf294c The renamer wasn't computing the free variables of a type declaration properly. This patch refactors a bit, and makes it more robust, fixing #3955 and several other closely-related bugs. (We were omitting some free variables and that could just possibly lead to a usage-version tracking error. ] [Layout only simonpj@microsoft.com**20100409163506 Ignore-this: 1f14990b5aa0b9821b84452fb34e9f41 ] [Give a better deprecated message for INCLUDE pragmas; fixes #3933 Ian Lynagh **20100506130910 We now have a DeprecatedFullText constructor, so we can override the "-#include is deprecated: " part of the warning. ] [De-haddock a comment that confuses haddock Ian Lynagh **20100506123607] [Fix comment to not confuse haddock Ian Lynagh **20100506113642] [Detect EOF when trying to parse a string in hp2ps Ian Lynagh **20100506000830] [Make the demand analyser sdd demands for strict constructors simonpj@microsoft.com**20100505200936 Ignore-this: eb32632adbc354eb7a5cf884c263e0d3 This opportunity was spotted by Roman, and is documented in Note [Add demands for strict constructors] in DmdAnal. ] [Fix interaction of exprIsCheap and the lone-variable inlining check simonpj@microsoft.com**20100505200723 Ignore-this: f3cb65085c5673a99153d5d7b6559ab1 See Note [Interaction of exprIsCheap and lone variables] in CoreUnfold This buglet meant that a nullary definition with an INLINE pragma counter-intuitively didn't get inlined at all. Roman identified the bug. ] [Matching cases in SpecConstr and Rules simonpj@microsoft.com**20100505200543 Ignore-this: f5c28c780fbf8badce84c6fdc9aa1779 This patch has zero effect. It includes comments, a bit of refactoring, and a tiny bit of commment-out code go implement the "matching cases" idea below. In the end I've left it disabled because while I think it does no harm I don't think it'll do any good either. But I didn't want to lose the idea totally. There's a thread called "Storable and constant memory" on the libraries@haskell.org list (Apr 2010) about it. Note [Matching cases] ~~~~~~~~~~~~~~~~~~~~~ {- NOTE: This idea is currently disabled. It really only works if the primops involved are OkForSpeculation, and, since they have side effects readIntOfAddr and touch are not. Maybe we'll get back to this later . -} Consider f (case readIntOffAddr# p# i# realWorld# of { (# s#, n# #) -> case touch# fp s# of { _ -> I# n# } } ) This happened in a tight loop generated by stream fusion that Roman encountered. We'd like to treat this just like the let case, because the primops concerned are ok-for-speculation. That is, we'd like to behave as if it had been case readIntOffAddr# p# i# realWorld# of { (# s#, n# #) -> case touch# fp s# of { _ -> f (I# n# } } ) ] [Comments only simonpj@microsoft.com**20100504163629 Ignore-this: 3be12df04714aa820bce706b5dc8a9cb ] [Comments only simonpj@microsoft.com**20100504163529 Ignore-this: 791e2fd39c7d880ce1dc80ebdf3a5398 ] [Comments only simonpj@microsoft.com**20100504163457 Ignore-this: f19e9ffeb3d65770b1595bca5f97a59d ] [Comments only (about type families) simonpj@microsoft.com**20100417145032 Ignore-this: dd39425ef2155d52dbf55a4d5fd97cb8 ] [Fix hp2ps when the .hp file has large string literals Ian Lynagh **20100505191921] [In build system, call package-config after including package data Ian Lynagh **20100504225035 Otherwise the $1_$2_HC_OPTS variable gets clobbered. ] [runghc: flush stdout/stderr on an exception (#3890) Simon Marlow **20100505133848 Ignore-this: 224c1898cec64cb1c94e0d7033e7590e ] [Remove the Unicode alternative for ".." (#3894) Simon Marlow **20100505121202 Ignore-this: 2452cd67281667106f9169747b6d784f ] [tidyup; no functional changes Simon Marlow **20100505115015 Ignore-this: d0787e5cdeef1dee628682fa0a46019 ] [Make the running_finalizers flag task-local Simon Marlow **20100505114947 Ignore-this: 345925d00f1dca203941b3c5d84c90e1 Fixes a bug reported by Lennart Augustsson, whereby we could get an incorrect error from the RTS about re-entry from a finalizer, ] [add a MAYBE_GC() in killThread#, fixes throwto003(threaded2) looping Simon Marlow **20100505114746 Ignore-this: efea04991d6feed04683a42232fc85da ] [Allow filepath-1.2.* Simon Marlow **20100505101139 Ignore-this: 1b5580cd9cd041ec48f40cd37603326a ] [BlockedOnMsgThrowTo is possible in resurrectThreads (#4030) Simon Marlow **20100505094534 Ignore-this: ac24a22f95ffeaf480187a1620fdddb2 ] [Don't raise a throwTo when the target is masking and BlockedOnBlackHole Simon Marlow **20100505094506 Ignore-this: 302616931f61667030d77ddfbb02374e ] [Fix build with GHC 6.10 Ian Lynagh **20100504180302 In GHC 6.10, intersectionWith is (a -> b -> a) instead of (a -> b -> c), so we need to jump through some hoops to get the more general type. ] [The libffi patches are no longer needed Ian Lynagh **20100504171603] [Use the in-tree windres; fixes trac #4032 Ian Lynagh **20100504170941] [Print unfoldings on lambda-bound variables Simon PJ **20100503181822 Ignore-this: 2fd5a7502cc6273d96258e0914f0f8cd ...in the unusual case where they have one; see Note [Case binders and join points] in Simplify.lhs ] [Replace FiniteMap and UniqFM with counterparts from containers. Milan Straka **20100503171315 Ignore-this: a021972239163dbf728284b19928cebb The original interfaces are kept. There is small performance improvement: - when compiling for five nofib, we get following speedups: Average ----- -2.5% Average ----- -0.6% Average ----- -0.5% Average ----- -5.5% Average ----- -10.3% - when compiling HPC ten times, we get: switches oldmaps newmaps -O -fasm 117.402s 116.081s (98.87%) -O -fasm -fregs-graph 119.993s 118.735s (98.95%) -O -fasm -fregs-iterative 120.191s 118.607s (98.68%) ] [Make the demand analyser take account of lambda-bound unfoldings Simon PJ **20100503151630 Ignore-this: 2ee8e27d4df2debfc79e6b8a17c32bc1 This is a long-standing lurking bug. See Note [Lamba-bound unfoldings] in DmdAnal. I'm still not really happy with this lambda-bound-unfolding stuff. ] [Fix dynamic libs on OS X, and enable them by default Ian Lynagh **20100503150302] [Switch back to using bytestring from the darcs repo; partially fixes #3855 Ian Lynagh **20100502113458] [Fix some cpp warnings when building on FreeBSD; patch from Gabor PALI Ian Lynagh **20100428150700] [Fix "make 2" Ian Lynagh **20100427162212 The new Makefile logic was enabling the stage 1 rules when stage=2, so "make 2" was rebuilding stage 1. ] [Inplace programs depend on their shell wrappers Ian Lynagh **20100427160038] [--make is now the default (#3515), and -fno-code works with --make (#3783) Simon Marlow **20100427122851 Ignore-this: 33330474fa4703f32bf9997462b4bf3c If the command line contains any Haskell source files, then we behave as if --make had been given. The meaning of the -c flag has changed (back): -c now selects one-shot compilation, but stops before linking. However, to retain backwards compatibility, -c is still allowed with --make, and means the same as --make -no-link. The -no-link flag has been un-deprecated. -fno-code is now allowed with --make (#3783); the fact that it was disabled before was largely accidental, it seems. We also had some regressions in this area: it seems that -fno-code was causing a .hc file to be emitted in certain cases. I've tidied up the code, there was no need for -fno-code to be a "mode" flag, as far as I can tell. -fno-code does not emit interface files, nor does it do recompilation checking, as suggested in #3783. This would make Haddock emit interface files, for example, and I'm fairly sure we don't want to do that. Compiling with -fno-code is pretty quick anyway, perhaps we can get away without recompilation checking. ] [remove duplicate docs for -e in --help output (#4010) Simon Marlow **20100426140642 Ignore-this: 187ff893ba8ffa0ec127867a7590e38d ] [workaround for #4003, fixes HEAD build with 6.12.2 Simon Marlow **20100426103428 Ignore-this: c4bc445dc8052d4e6efef3f1daf63562 ] [Make sure all the clean rules are always included Ian Lynagh **20100424181823 In particular, this fixes a problem where stage3 bits weren't being cleaned ] [Correct the name of the amd64/FreeBSD platform in PlatformSupportsSharedLibs Ian Lynagh **20100424132830 We weren't getting sharedlibs on amd64/FreeBSD because of this ] [Include DPH docs in bindists Ian Lynagh **20100424123101] [reinstate eta-expansion during SimplGently, to fix inlining of sequence_ Simon Marlow **20100423124853 Ignore-this: 4fa0fd5bafe0d6b58fc81076f50d5f8d ] [fix 64-bit value for W_SHIFT, which thankfully appears to be not used Simon Marlow **20100422213605 Ignore-this: 525c062d2456c224ec8d0e083edd3b55 ] [Add missing constant folding and optimisation for unsigned division Simon Marlow **20100422213443 Ignore-this: fb10d1cda0852fab0cbcb47247498fb3 Noticed by Denys Rtveliashvili , see #4004 ] [Fix the GHC API link in the main doc index.html Ian Lynagh **20100422213226] [Give the right exit code in darcs-all Ian Lynagh **20100421171339 Our END block was calling system, which alters $?. So now we save and restore it. ] [Use StgWord64 instead of ullong Ian Lynagh **20100421162336 This patch also fixes ullong_format_string (renamed to showStgWord64) so that it works with values outside the 32bit range (trac #3979), and simplifies the without-commas case. ] [Implement try10Times in Makefile Ian Lynagh **20100420165909 Avoid using seq, as FreeBSD has jot instead. ] [Fix crash in non-threaded RTS on Windows Simon Marlow **20100420122125 Ignore-this: 28b0255a914a8955dce02d89a7dfaca The tso->block_info field is now overwritten by pushOnRunQueue(), but stg_block_async_info was assuming that it still held a pointer to the StgAsyncIOResult. We must therefore save this value somewhere safe before putting the TSO on the run queue. ] [Expand the scope of the event_buf_mutex to cover io_manager_event Simon Marlow **20100420122026 Ignore-this: 185a6d84f7d4a35997f10803f6dacef1 I once saw a failure that I think was due to a race on io_manager_event, this should fix it. ] [Flags -auto and -auto-all operate only on functions not marked INLINE. Milan Straka **20100331191050 Ignore-this: 3b63580cfcb3c33d62ad697c36d94d05 ] [Spelling correction for LANGUAGE pragmas Max Bolingbroke **20100413192825 Ignore-this: 311b51ba8d43f6c7fd32f48db9a88dee ] [Update the user guide so it talks about the newer "do rec" notation everywhere Ian Lynagh **20100416205416 Some of the problems highlighted in trac #3968. ] [Fix typo Ian Lynagh **20100416205412] [Fix Trac #3950: unifying types of different kinds simonpj@microsoft.com**20100412151845 Ignore-this: d145b9de5ced136ef2c39f3ea4a04f4a I was assuming that the unifer only unified types of the same kind, but now we can "defer" unsolved constraints that invariant no longer holds. Or at least is's more complicated to ensure. This patch takes the path of not assuming the invariant, which is simpler and more robust. See Note [Mismatched type lists and application decomposition] ] [Fix Trac #3943: incorrect unused-variable warning simonpj@microsoft.com**20100412151630 Ignore-this: 52459f2b8b02c3cb120abe674dc9a060 In fixing this I did the usual little bit of refactoring ] [Convert boot and boot-pkgs to perl Ian Lynagh **20100415143919 This stops us having to worry about sh/sed/... portability. ] [Use $(MAKE), not make, when recursively calling make Ian Lynagh **20100415121453] [Remove the ghc_ge_609 makefile variables Ian Lynagh **20100412235658 They are now guaranteed to be YES ] [Increase the minimum version number required to 6.10 in configure.ac Ian Lynagh **20100412235313] [The bootstrapping compiler is now required to be > 609 Ian Lynagh **20100409161046] [Handle IND_STATIC in isRetainer Ian Lynagh **20100409104207 IND_STATIC used to be an error, but at the moment it can happen as isAlive doesn't look through IND_STATIC as it ignores static closures. See trac #3956 for a program that hit this error. ] [Add Data and Typeable instances to HsSyn David Waern **20100330011020 Ignore-this: c3f2717207b15539fea267c36b686e6a The instances (and deriving declarations) have been taken from the ghc-syb package. ] [Fix for derefing ThreadRelocated TSOs in MVar operations Simon Marlow **20100407092824 Ignore-this: 94dd7c68a6094eda667e2375921a8b78 ] [sanity check fix Simon Marlow **20100407092746 Ignore-this: 9c18cd5f5393e5049015ca52e62a1269 ] [get the reg liveness right in the putMVar# heap check Simon Marlow **20100407092724 Ignore-this: b1ba07a59ecfae00e9a1f8391741abc ] [initialise the headers of MSG_BLACKHOLE objects properly Simon Marlow **20100407081712 Ignore-this: 183dcd0ca6a395d08db2be12b02bdd79 ] [initialise the headers of MVAR_TSO_QUEUE objects properly Simon Marlow **20100407081514 Ignore-this: 4b4a2f30cf2fb69ca4128c41744687bb ] [undo debugging code Simon Marlow **20100406142740 Ignore-this: 323c2248f817b6717c19180482fc4b00 ] [putMVar#: fix reg liveness in the heap check Simon Marlow **20100406135832 Ignore-this: cddd2c7807ac7612c9b2c4c0d384d284 ] [account for the new BLACKHOLEs in the GHCi debugger Simon Marlow **20100406133406 Ignore-this: 4d4aeb4bbada3f50dc1fb0123f565e8f ] [don't forget to deRefTSO() in tryWakeupThread() Simon Marlow **20100406130411 Ignore-this: 171d57c4f8653835dec0b69f9be9881c ] [Fix bug in popRunQueue Simon Marlow **20100406091453 Ignore-this: 9d3cec8f18f5c5cbd51751797386eb6f ] [fix bug in migrateThread() Simon Marlow **20100401105840 Ignore-this: 299bcf0d1ea0f8865f3e845eb93d2ad3 ] [Remove the IND_OLDGEN and IND_OLDGEN_PERM closure types Simon Marlow **20100401093519 Ignore-this: 95f2480c8a45139835eaf5610217780b These are no longer used: once upon a time they used to have different layout from IND and IND_PERM respectively, but that is no longer the case since we changed the remembered set to be an array of addresses instead of a linked list of closures. ] [Change the representation of the MVar blocked queue Simon Marlow **20100401091605 Ignore-this: 20a35bfabacef2674df362905d7834fa The list of threads blocked on an MVar is now represented as a list of separately allocated objects rather than being linked through the TSOs themselves. This lets us remove a TSO from the list in O(1) time rather than O(n) time, by marking the list object. Removing this linear component fixes some pathalogical performance cases where many threads were blocked on an MVar and became unreachable simultaneously (nofib/smp/threads007), or when sending an asynchronous exception to a TSO in a long list of thread blocked on an MVar. MVar performance has actually improved by a few percent as a result of this change, slightly to my surprise. This is the final cleanup in the sequence, which let me remove the old way of waking up threads (unblockOne(), MSG_WAKEUP) in favour of the new way (tryWakeupThread and MSG_TRY_WAKEUP, which is idempotent). It is now the case that only the Capability that owns a TSO may modify its state (well, almost), and this simplifies various things. More of the RTS is based on message-passing between Capabilities now. ] [eliminate some duplication with a bit of CPP Simon Marlow **20100330154355 Ignore-this: 838f7d341f096ca14c86ab9c81193e36 ] [Make ioManagerDie() idempotent Simon Marlow **20100401100705 Ignore-this: a5996b43cdb2e2d72e6e971d7ea925fb Avoids screeds of "event buffer overflowed; event dropped" in conc059(threaded1). ] [Move a thread to the front of the run queue when another thread blocks on it Simon Marlow **20100329144521 Ignore-this: c518ff0d41154680edc811d891826a29 This fixes #3838, and was made possible by the new BLACKHOLE infrastructure. To allow reording of the run queue I had to make it doubly-linked, which entails some extra trickiness with regard to GC write barriers and suchlike. ] [remove non-existent MUT_CONS symbols Simon Marlow **20100330152600 Ignore-this: 885628257a9d03f2ece2a754d993014a ] [change throwTo to use tryWakeupThread rather than unblockOne Simon Marlow **20100329144613 Ignore-this: 10ad4965e6c940db71253f1c72218bbb ] [tiny GC optimisation Simon Marlow **20100329144551 Ignore-this: 9e095b9b73fff0aae726f9937846ba92 ] [New implementation of BLACKHOLEs Simon Marlow **20100329144456 Ignore-this: 96cd26793b4e6ab9ddd0d59aae5c2f1d This replaces the global blackhole_queue with a clever scheme that enables us to queue up blocked threads on the closure that they are blocked on, while still avoiding atomic instructions in the common case. Advantages: - gets rid of a locked global data structure and some tricky GC code (replacing it with some per-thread data structures and different tricky GC code :) - wakeups are more prompt: parallel/concurrent performance should benefit. I haven't seen anything dramatic in the parallel benchmarks so far, but a couple of threading benchmarks do improve a bit. - waking up a thread blocked on a blackhole is now O(1) (e.g. if it is the target of throwTo). - less sharing and better separation of Capabilities: communication is done with messages, the data structures are strictly owned by a Capability and cannot be modified except by sending messages. - this change will utlimately enable us to do more intelligent scheduling when threads block on each other. This is what started off the whole thing, but it isn't done yet (#3838). I'll be documenting all this on the wiki in due course. ] [Fix warnings (allow pushOnRunQueue() to not be inlined) Simon Marlow **20100401114559 Ignore-this: f40bfbfad70a5165a946d11371605b7d ] [remove out of date comment Simon Marlow **20100401105853 Ignore-this: 26af88dd418ee0bcda7223b3b7e4e8d2 ] [tidy up spacing in stderr traces Simon Marlow **20100326163122 Ignore-this: 16558b0433a274be217d4bf39aa4946 ] [Fix an assertion that was not safe when running in parallel Simon Marlow **20100325143656 Ignore-this: cad08fb8900eb3a475547af0189fcc47 ] [Never jump directly to a thunk's entry code, even if it is single-entry Simon Marlow **20100325114847 Ignore-this: 938da172c06a97762ef605c8fccfedf1 I don't think this fixes any bugs as we don't have single-entry thunks at the moment, but it could cause problems for parallel execution if we ever did re-introduce update avoidance. ] [Rename forgotten -dverbose-simpl to -dverbose-core2core in the docs. Milan Straka **20100331153626 Ignore-this: 2da58477fb96e1cfb80f37dddd7c422c ] [Add -pa and -V to the documentation of time profiling options. Milan Straka **20100329191121 Ignore-this: be74d216481ec5a19e5f40f85e6e3d65 ] [Keep gcc 4.5 happy Simon Marlow **20100330120425 Ignore-this: 7811878cc2bd1ce9cfbb5bf102fe3454 ] [Fix warning compiling Linker.c for PPC Mac naur@post11.tele.dk**20100403182355 Ignore-this: e2d2448770c9714ce17dd6cf3e297063 The warning message eliminated is: > rts/Linker.c:4756:0: > warning: nested extern declaration of 'symbolsWithoutUnderscore' ] [Fix error compiling AsmCodeGen.lhs for PPC Mac (mkRtsCodeLabel) naur@post11.tele.dk**20100403181656 Ignore-this: deb7524ea7852a15a2ac0849c8c82f74 The error messages eliminated are: > compiler/nativeGen/AsmCodeGen.lhs:875:31: > Not in scope: `mkRtsCodeLabel' > compiler/nativeGen/AsmCodeGen.lhs:879:31: > Not in scope: `mkRtsCodeLabel' > compiler/nativeGen/AsmCodeGen.lhs:883:31: > Not in scope: `mkRtsCodeLabel' ] [Fix error compiling AsmCodeGen.lhs for PPC Mac (DestBlockId) naur@post11.tele.dk**20100403180643 Ignore-this: 71e833e94ed8371b2ffabc2cf80bf585 The error message eliminated is: > compiler/nativeGen/AsmCodeGen.lhs:637:16: > Not in scope: data constructor `DestBlockId' ] [Fix boot-pkgs's sed usage to work with Solaris's sed Ian Lynagh **20100401153441] [Pass "-i org.haskell.GHC" to packagemaker when building the OS X installer Ian Lynagh **20100331144707 This seems to fix this failure: [...] ** BUILD SUCCEEDED ** rm -f -f GHC-system.pmdoc/*-contents.xml /Developer/usr/bin/packagemaker -v --doc GHC-system.pmdoc\ -o /Users/ian/to_release/ghc-6.12.1.20100330/GHC-6.12.1.20100330-i386.pkg 2010-03-31 15:08:15.695 packagemaker[13909:807] Setting to : 0 (null) 2010-03-31 15:08:15.709 packagemaker[13909:807] Setting to : 0 org.haskell.glasgowHaskellCompiler.ghc.pkg 2010-03-31 15:08:15.739 packagemaker[13909:807] relocate: (null) 0 2010-03-31 15:08:15.740 packagemaker[13909:807] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSXMLDocument initWithXMLString:options:error:]: nil argument' 2010-03-31 15:08:15.741 packagemaker[13909:807] Stack: ( 2511962091, 2447007291, 2511961547, 2511961610, 2432803204, 453371, 447720, 436209, 435510, 9986, 9918 ) make[1]: *** [framework-pkg] Trace/BPT trap make: *** [framework-pkg] Error 2 ] [Use machdepCCOpts when compiling the file to toggle -(no-)rtsopts Ian Lynagh **20100331161302 Should fix toggling on OS X "Snow Leopard". Diagnosed by Roman Leshchinskiy. ] [Avoid a non-portable use of tar reported by Roman Leshchinskiy Ian Lynagh **20100330145802] [Don't install EXTRA_PACKAGES by default Simon Marlow **20100330142714 Ignore-this: d4cc8f87a6de8d9d1d6dc9b77130b3 ] [fix a non-portable printf format Simon Marlow **20100330134437 Ignore-this: d41c23c54ec29654cb2049de1e588570 ] [avoid single quote in #error Simon Marlow **20100330120346 Ignore-this: 663f39e7a27fead2f648fbf22d345bb4 ] [use FMT_Word64 instead of locally-defined version Simon Marlow **20100330114650 Ignore-this: 82697b8095dffb3a8e196c687006ece0 ] [remove old/unused DotnetSupport and GhcLibsWithUnix Simon Marlow **20100330123732 Ignore-this: c68814868b3671abdc369105bbeafe6c ] [fix return type cast in f.i.wrapper when using libffi (#3516) Simon Marlow **20100329154220 Ignore-this: f898eb8c9ae2ca2009e539735b92c438 Original fix submitted by Sergei Trofimovich modified by me: - exclude 64-bit types - compare uniques, not strings - #include "ffi.h" is conditional ] [libffi: install 'ffitarget.h' header as sole 'ffi.h' is unusable Simon Marlow **20100329135734 Ignore-this: f9b555ea289d8df1aa22cb6faa219a39 Submitted by: Sergei Trofimovich Re-recorded against HEAD. ] [avoid a fork deadlock (see comments) Simon Marlow **20100329132329 Ignore-this: 3377f88b83bb3b21e42d7fc5f0d866f ] [tidy up the end of the all_tasks list after forking Simon Marlow **20100329132253 Ignore-this: 819d679875be5f344e816210274d1c29 ] [Add a 'setKeepCAFs' external function (#3900) Simon Marlow **20100329110036 Ignore-this: ec532a18cad4259a09847b0b9ae2e1d2 ] [Explicitly check whether ar supports the @file syntax Ian Lynagh **20100329123325 rather than assuming that all GNU ar's do. Apparently OpenBSD's older version doesn't. ] [Fix the format specifier for Int64/Word64 on Windows Ian Lynagh **20100327182126 mingw doesn't understand %llu/%lld - it treats them as 32-bit rather than 64-bit. We use %I64u/%I64d instead. ] [Fix the ghci startmenu item Ian Lynagh **20100326235934 I'm not sure what changed, but it now doesn't work for me without the "Start in" field being set. ] [Fix paths to docs in "Start Menu" entries in Windows installer; fixes #3847 Ian Lynagh **20100326155917] [Add a licence file for the Windows installer to use Ian Lynagh **20100326155130] [Add gcc-g++ to the inplace mingw installation; fixes #3893 Ian Lynagh **20100326154714] [Add the licence file to the Windows installer. Fixes #3934 Ian Lynagh **20100326152449] [Quote the paths to alex and happy in configure Ian Lynagh **20100325143449 Ignore-this: d6d6e1a250f88985bbeea760e63a79db ] [Use rather than ++ "/" Ian Lynagh **20100325133237 This stops us generating paths like c:\foo\/ghc460_0/ghc460_0.o which windres doesn't understand. ] [Append $(exeext) to utils/ghc-pkg_dist_PROG Ian Lynagh **20100324233447 Fixes bindist creation ] [A sanity check Simon Marlow **20100325110500 Ignore-this: 3b3b76d898c822456857e506b7531e65 ] [do_checks: do not set HpAlloc if the stack check fails Simon Marlow **20100325110328 Ignore-this: 899ac8c29ca975d03952dbf4608d758 This fixes a very rare heap corruption bug, whereby - a context switch is requested, which sets HpLim to zero (contextSwitchCapability(), called by the timer signal or another Capability). - simultaneously a stack check fails, in a code fragment that has both a stack and a heap check. The RTS then assumes that a heap-check failure has occurred and subtracts HpAlloc from Hp, although in fact it was a stack-check failure and retreating Hp will overwrite valid heap objects. The bug is that HpAlloc should only be set when Hp has been incremented by the heap check. See comments in rts/HeapStackCheck.cmm for more details. This bug is probably incredibly rare in practice, but I happened to be working on a test that triggers it reliably: concurrent/should_run/throwto001, compiled with -O -threaded, args 30 300 +RTS -N2, run repeatedly in a loop. ] [comments and formatting only Simon Marlow **20100325104617 Ignore-this: c0a211e15b5953bb4a84771bcddd1d06 ] [Change how perl scripts get installed; partially fixes #3863 Ian Lynagh **20100324171422 We now regenerate them when installing, which means the path for perl doesn't get baked in ] [Pass the location of gcc in the ghc wrapper script; partially fixes #3863 Ian Lynagh **20100324171408 This means we don't rely on baking a path to gcc into the executable ] [Quote the ar path in configure Ian Lynagh **20100324162043] [Remove unused cUSER_WAY_NAMES cUSER_WAY_OPTS Ian Lynagh **20100324145048] [Remove unused cCONTEXT_DIFF Ian Lynagh **20100324145013] [Remove unused cEnableWin32DLLs Ian Lynagh **20100324144841] [Remove unused cGHC_CP Ian Lynagh **20100324144656] [Fix the build for non-GNU-ar Ian Lynagh **20100324132907] [Tweak the Makefile code for making .a libs; fixes trac #3642 Ian Lynagh **20100323221325 The main change is that, rather than using "xargs ar" we now put all the filenames into a file, and do "ar @file". This means that ar adds all the files at once, which works around a problem where files with the same basename in a later invocation were overwriting the existing file in the .a archive. ] [Enable shared libraries on Windows; fixes trac #3879 Ian Lynagh **20100320231414 Ignore-this: c93b35ec5b7a7fa6ddb286d17a616216 ] [Add the external core PDF to the new build system Ian Lynagh **20100321161909] [Allow specifying $threads directly when validating Ian Lynagh **20100321112835] [Remove LazyUniqFM; fixes trac #3880 Ian Lynagh **20100320213837] [UNDO: slight improvement to scavenging ... Simon Marlow **20100319153413 Ignore-this: f0ab581c07361f7b57eae02dd6ec893c Accidnetally pushed this patch which, while it validates, isn't correct. rolling back: Fri Mar 19 11:21:27 GMT 2010 Simon Marlow * slight improvement to scavenging of update frames when a collision has occurred M ./rts/sm/Scav.c -19 +15 ] [slight improvement to scavenging of update frames when a collision has occurred Simon Marlow **20100319112127 Ignore-this: 6de2bb9614978975f17764a0f259d9bf ] [Don't install the utf8-string package Ian Lynagh **20100317212709] [Don't use -Bsymbolic when linking the RTS Ian Lynagh **20100316233357 This makes the RTS hooks work when doing dynamic linking ] [Fix Trac #3920: Template Haskell kinds simonpj@microsoft.com**20100317123519 Ignore-this: 426cac7920446e04f3cc30bd1d9f76e2 Fix two places where we were doing foldl instead of foldr after decomposing a Kind. Strange that the same bug appears in two quite different places! ] [copy_tag_nolock(): fix write ordering and add a write_barrier() Simon Marlow **20100316143103 Ignore-this: ab7ca42904f59a0381ca24f3eb38d314 Fixes a rare crash in the parallel GC. If we copy a closure non-atomically during GC, as we do for all immutable values, then before writing the forwarding pointer we better make sure that the closure itself is visible to other threads that might follow the forwarding pointer. I imagine this doesn't happen very often, but I just found one case of it: in scavenge_stack, the RET_FUN case, after evacuating ret_fun->fun we then follow it and look up the info pointer. ] [Add sliceP mapping to vectoriser builtins benl@ouroborus.net**20100316060517 Ignore-this: 54c3cafff584006b6fbfd98124330aa3 ] [Comments only benl@ouroborus.net**20100311064518 Ignore-this: d7dc718cc437d62aa5b1b673059a9b22 ] [TAG 2010-03-16 Ian Lynagh **20100316005137 Ignore-this: 234e3bc29e2f26cc59d7b03d780cc352 ] Patch bundle hash: 712b1cac9ed1e43858d5956c6568062ff74779d9