Commit b1cf9aae authored by Edward Z. Yang's avatar Edward Z. Yang
Browse files

For BC labels, emit empty data section instead of empty proc.



This fixes two bugs:

    - The new code generator doesn't like procedures with
      empty graphs, and panicked in labelAGraph.

    - LLVM optimizes away empty procedures but not empty
      data sections, so now the backwards-compatibility
      labels actually work with -fllvm.
Signed-off-by: Edward Z. Yang's avatarEdward Z. Yang <ezyang@mit.edu>
parent 1de43f7c
......@@ -105,7 +105,7 @@ mkModuleInit dflags cost_centre_info this_mod hpc_info
-- For backwards compatibility: user code may refer to this
-- label for calling hs_add_root().
; emitSimpleProc (mkPlainModuleInitLabel this_mod) $ return ()
; emitData Data $ [ CmmDataLabel (mkPlainModuleInitLabel this_mod) ]
; whenC (this_mod == mainModIs dflags) $
emitSimpleProc (mkPlainModuleInitLabel rOOT_MAIN) $ return ()
......
......@@ -25,6 +25,7 @@ import StgCmmTicky
import MkGraph
import CmmExpr
import CmmDecl
import CLabel
import PprCmm
......@@ -181,7 +182,7 @@ mkModuleInit cost_centre_info this_mod hpc_info
; initCostCentres cost_centre_info
-- For backwards compatibility: user code may refer to this
-- label for calling hs_add_root().
; emitSimpleProc (mkPlainModuleInitLabel this_mod) $ emptyAGraph
; emitData Data $ [ CmmDataLabel (mkPlainModuleInitLabel this_mod) ]
}
---------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment