X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=compiler%2Fcmm%2FCmmCPS.hs;h=6e9710065f2c4cf1b102abd439b7765070a4e51d;hb=cbebca1c9164a5e5ae9b117d0dcf5ad217defc6d;hp=6e0cd331c7dde19646575f14723c5695ea9c4f8a;hpb=2ec796239b782505cfb305af2789abcfa820baaf;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmCPS.hs b/compiler/cmm/CmmCPS.hs index 6e0cd33..6e97100 100644 --- a/compiler/cmm/CmmCPS.hs +++ b/compiler/cmm/CmmCPS.hs @@ -1,6 +1,7 @@ {-# OPTIONS_GHC -XNoMonoLocalBinds #-} -- Norman likes local bindings -- If this module lives on I'd like to get rid of this flag in due course + module CmmCPS ( -- | Converts C-- with full proceedures and parameters -- to a CPS transformed C-- with the stack made manifest. @@ -95,8 +96,9 @@ cpsTop hsc_env (CmmProc h@(TopInfo {stack_info=StackInfo {arg_space=entry_off}}) (dualLivenessWithInsertion procPoints) g -- Insert spills at defns; reloads at return points g <- - runOptimization $ rewriteAssignments g - dump Opt_D_dump_cmmz "Post rewrite assignments" g + -- pprTrace "pre insertLateReloads" (ppr g) $ + runOptimization $ insertLateReloads g -- Duplicate reloads just before uses + dump Opt_D_dump_cmmz "Post late reloads" g g <- -- pprTrace "post insertLateReloads" (ppr g) $ dual_rewrite runOptimization Opt_D_dump_cmmz "Dead Assignment Elimination" @@ -111,12 +113,13 @@ cpsTop hsc_env (CmmProc h@(TopInfo {stack_info=StackInfo {arg_space=entry_off}}) --------------- Stack layout ---------------- slotEnv <- run $ liveSlotAnal g + let spEntryMap = getSpEntryMap entry_off g mbpprTrace "live slot analysis results: " (ppr slotEnv) $ return () - let areaMap = layout procPoints slotEnv entry_off g + let areaMap = layout procPoints spEntryMap slotEnv entry_off g mbpprTrace "areaMap" (ppr areaMap) $ return () ------------ Manifest the stack pointer -------- - g <- run $ manifestSP areaMap entry_off g + g <- run $ manifestSP spEntryMap areaMap entry_off g dump Opt_D_dump_cmmz "after manifestSP" g -- UGH... manifestSP can require updates to the procPointMap. -- We can probably do something quicker here for the update...