X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmCPS.hs;h=aad00371a19e1162d0c592f37d89b2348576b435;hb=5ccf658872ea2304f34eda6b1fb840fc1bfc0ba0;hp=6e0cd331c7dde19646575f14723c5695ea9c4f8a;hpb=2ec796239b782505cfb305af2789abcfa820baaf;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmCPS.hs b/compiler/cmm/CmmCPS.hs index 6e0cd33..aad0037 100644 --- a/compiler/cmm/CmmCPS.hs +++ b/compiler/cmm/CmmCPS.hs @@ -95,8 +95,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 +112,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...