From: Edward Z. Yang Date: Wed, 13 Apr 2011 14:29:48 +0000 (+0100) Subject: For BC labels, emit empty data section instead of empty proc. X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=b1cf9aae4a495b619375da716d6d14f7cb494f8e;hp=1de43f7ca9e3790bb6450bb6860d5d14261470d9;p=ghc-hetmet.git 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 --- diff --git a/compiler/codeGen/CodeGen.lhs b/compiler/codeGen/CodeGen.lhs index 81a65f7..7a7bf48 100644 --- a/compiler/codeGen/CodeGen.lhs +++ b/compiler/codeGen/CodeGen.lhs @@ -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 () diff --git a/compiler/codeGen/StgCmm.hs b/compiler/codeGen/StgCmm.hs index fa3dcfe..2bfe187 100644 --- a/compiler/codeGen/StgCmm.hs +++ b/compiler/codeGen/StgCmm.hs @@ -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) ] } ---------------------------------------------------------------