Move the LDV code below the self-loop label (#8275)
authorPatrick Palka <patrick@parcs.ath.cx>
Sun, 1 Dec 2013 17:47:33 +0000 (12:47 -0500)
committerPatrick Palka <patrick@parcs.ath.cx>
Sun, 1 Dec 2013 20:54:04 +0000 (15:54 -0500)
compiler/codeGen/StgCmmBind.hs

index 41e549e..64772c6 100644 (file)
@@ -476,12 +476,12 @@ closureCodeBody top_lvl bndr cl_info cc args arity body fv_details
                 ; dflags <- getDynFlags
                 ; let node_points = nodeMustPointToIt dflags lf_info
                       node' = if node_points then Just node else Nothing
-                ; when node_points (ldvEnterClosure cl_info (CmmLocal node))
                 -- Emit new label that might potentially be a header
                 -- of a self-recursive tail call. See Note
                 -- [Self-recursive tail calls] in StgCmmExpr
                 ; loop_header_id <- newLabelC
                 ; emitLabel loop_header_id
+                ; when node_points (ldvEnterClosure cl_info (CmmLocal node))
                 -- Extend reader monad with information that
                 -- self-recursive tail calls can be optimized into local
                 -- jumps