Fix loopification with profiling and enable it by default (#8275)
authorPatrick Palka <patrick@parcs.ath.cx>
Fri, 29 Nov 2013 18:40:42 +0000 (13:40 -0500)
committerJan Stolarek <jan.stolarek@p.lodz.pl>
Sun, 1 Dec 2013 08:08:24 +0000 (09:08 +0100)
compiler/codeGen/StgCmmBind.hs
compiler/main/DynFlags.hs

index 4762c5a..16477c8 100644 (file)
@@ -31,7 +31,6 @@ import StgCmmForeign    (emitPrimCall)
 import MkGraph
 import CoreSyn          ( AltCon(..) )
 import SMRep
-import BlockId
 import Cmm
 import CmmInfo
 import CmmUtils
@@ -481,8 +480,7 @@ closureCodeBody top_lvl bndr cl_info cc args arity body fv_details
                 -- Emit new label that might potentially be a header
                 -- of a self-recursive tail call. See Note
                 -- [Self-recursive tail calls] in StgCmmExpr
-                ; u <- newUnique
-                ; let loop_header_id = mkBlockId u
+                ; loop_header_id <- newLabelC
                 ; emitLabel loop_header_id
                 -- Extend reader monad with information that
                 -- self-recursive tail calls can be optimized into local
@@ -495,7 +493,7 @@ closureCodeBody top_lvl bndr cl_info cc args arity body fv_details
                   tickyEnterFun cl_info
                 ; enterCostCentreFun cc
                     (CmmMachOp (mo_wordSub dflags)
-                         [ CmmReg nodeReg
+                         [ CmmReg (CmmLocal node) -- not nodeReg, see #8275
                          , mkIntExpr dflags (funTag dflags cl_info) ])
                 ; fv_bindings <- mapM bind_fv fv_details
                 -- Load free vars out of closure *after*
index 7c07a36..05a72d6 100644 (file)
@@ -2957,6 +2957,7 @@ optLevelFlags
     , ([0,1,2], Opt_LlvmTBAA)
     , ([1,2],   Opt_CmmSink)
     , ([1,2],   Opt_CmmElimCommonBlocks)
+    , ([1,2],   Opt_Loopification)
 
     , ([0,1,2],     Opt_DmdTxDictSel)