diff options
| author | Simon Marlow <marlowsd@gmail.com> | 2012-01-27 11:22:07 +0000 |
|---|---|---|
| committer | Simon Marlow <marlowsd@gmail.com> | 2012-01-27 11:22:07 +0000 |
| commit | 79c8c5cb20aa57e7b0a9fa27cbf3e4287acb203f (patch) | |
| tree | 40e893bfa7723e879e518457be5ebc4dcb04af2a | |
| parent | 293054a611f3f43126e1f45c2fb3c973cee87c15 (diff) | |
| download | haskell-79c8c5cb20aa57e7b0a9fa27cbf3e4287acb203f.tar.gz | |
Move the 2nd control-flow optimisation pass
It was causing wrong info tables where it was; I'm not entirely sure
why.
| -rw-r--r-- | compiler/cmm/CmmPipeline.hs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/cmm/CmmPipeline.hs b/compiler/cmm/CmmPipeline.hs index 7af9f5729d..8bccc9d103 100644 --- a/compiler/cmm/CmmPipeline.hs +++ b/compiler/cmm/CmmPipeline.hs @@ -160,15 +160,17 @@ cpsTop hsc_env (CmmProc h@(TopInfo {stack_info=StackInfo {arg_space=entry_off}}) gs <- {-# SCC "lowerSafeForeignCalls" #-} run $ mapM (lowerSafeForeignCalls areaMap) gs dumps Opt_D_dump_cmmz_lower "Post lowerSafeForeignCalls" gs + -- NO MORE GRAPH TRANSFORMATION AFTER HERE -- JUST MAKING INFOTABLES + gs <- {-# SCC "setInfoTableStackMap" #-} return $ map (setInfoTableStackMap slotEnv areaMap) gs + dumps Opt_D_dump_cmmz_info "after setInfoTableStackMap" gs + ----------- Control-flow optimisations --------------- gs <- {-# SCC "cmmCfgOpts(2)" #-} return $ map cmmCfgOptsProc gs dumps Opt_D_dump_cmmz_cfg "Post control-flow optimsations" gs - -- NO MORE GRAPH TRANSFORMATION AFTER HERE -- JUST MAKING INFOTABLES - gs <- {-# SCC "setInfoTableStackMap" #-} return $ map (setInfoTableStackMap slotEnv areaMap) gs - dumps Opt_D_dump_cmmz_info "after setInfoTableStackMap" gs gs <- {-# SCC "bundleCAFs" #-} return $ map (bundleCAFs cafEnv) gs dumps Opt_D_dump_cmmz_cafs "after bundleCAFs" gs + return (localCAFs, gs) -- gs :: [ (CAFSet, CmmDecl) ] |
