From: simonmar Date: Thu, 2 Dec 1999 17:57:15 +0000 (+0000) Subject: [project @ 1999-12-02 17:57:13 by simonmar] X-Git-Tag: Approximately_9120_patches~5443 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=0e9a9af906266a131ede746ed860a381a6b0eabc;p=ghc-hetmet.git [project @ 1999-12-02 17:57:13 by simonmar] Change the convention for cost-centre labels to be _cc and cost-centre stacks to be _ccs. This makes cost-centre labels more consistent with our other naming conventions, and fixes some problems caused by cost-centre labels being misinterpreted by the mangler. This fixes one cause of profiled programs crashing; if you're seeing this symptom then this patch may help. --- diff --git a/ghc/compiler/absCSyn/CLabel.lhs b/ghc/compiler/absCSyn/CLabel.lhs index 644a13d..3d0ade9 100644 --- a/ghc/compiler/absCSyn/CLabel.lhs +++ b/ghc/compiler/absCSyn/CLabel.lhs @@ -1,7 +1,7 @@ % % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % -% $Id: CLabel.lhs,v 1.29 1999/11/02 15:05:40 simonmar Exp $ +% $Id: CLabel.lhs,v 1.30 1999/12/02 17:57:13 simonmar Exp $ % \section[CLabel]{@CLabel@: Information to make C Labels} @@ -371,6 +371,8 @@ internal names. is one of the following: static_info Static Constructor info table sel_info Selector info table sel_entry Selector entry code + cc Cost centre + ccs Cost centre stack \begin{code} -- specialised for PprAsm: saves lots of arg passing in NCG diff --git a/ghc/compiler/profiling/CostCentre.lhs b/ghc/compiler/profiling/CostCentre.lhs index ac69699..5d0ef91 100644 --- a/ghc/compiler/profiling/CostCentre.lhs +++ b/ghc/compiler/profiling/CostCentre.lhs @@ -302,7 +302,7 @@ instance Outputable CostCentreStack where OverheadCCS -> ptext SLIT("CCS_OVERHEAD") DontCareCCS -> ptext SLIT("CCS_DONTZuCARE") SubsumedCCS -> ptext SLIT("CCS_SUBSUMED") - SingletonCCS cc -> ptext SLIT("CCS_") <> ppr cc + SingletonCCS cc -> ppr cc <> ptext SLIT("_ccs") pprCostCentreStackDecl :: CostCentreStack -> SDoc pprCostCentreStackDecl ccs@(SingletonCCS cc) @@ -363,11 +363,11 @@ pp_caf other = empty -- Printing as a C label -ppCostCentreLbl (NoCostCentre) = text "CC_NONE" -ppCostCentreLbl (AllCafsCC {cc_mod = m}) = text "CC_CAFs_" <> pprModuleName m +ppCostCentreLbl (NoCostCentre) = text "NONE_cc" +ppCostCentreLbl (AllCafsCC {cc_mod = m}) = pprModuleName m <> text "_CAFs_cc" ppCostCentreLbl (NormalCC {cc_name = n, cc_mod = m, cc_is_caf = is_caf}) - = text "CC_" <> text (case is_caf of { CafCC -> "CAF_"; _ -> "" }) - <> pprModuleName m <> ptext n + = pprModuleName m <> ptext n <> + text (case is_caf of { CafCC -> "_CAF"; _ -> "" }) <> text "_cc" -- This is the name to go in the user-displayed string, -- recorded in the cost centre declaration diff --git a/ghc/driver/ghc-asm.lprl b/ghc/driver/ghc-asm.lprl index a09a1db..193e710 100644 --- a/ghc/driver/ghc-asm.lprl +++ b/ghc/driver/ghc-asm.lprl @@ -492,7 +492,6 @@ sub mangle_asm { } elsif ( /^$TUS[A-Za-z0-9_]+\.\d+$TPOSTLBL[@]?$/o || /^$TUS[@]?.*_CAT$TPOSTLBL[@]?$/o # PROF: _entryname_CAT - || /^$TUS[@]?CC_.*_struct$TPOSTLBL[@]?$/o # PROF: _CC_ccident_struct || /^$TUS[@]?.*_done$TPOSTLBL[@]?$/o # PROF: _module_done || /^$TUS[@]?_module_registered$TPOSTLBL[@]?$/o # PROF: _module_registered ) { @@ -510,7 +509,7 @@ sub mangle_asm { $chkcat[$i] = 'toc'; $chksymb[$i] = $1; - } elsif ( /^$TUS[@]?CC(S)?_.*$/ ) { + } elsif ( /^$TUS[@]?([A-Za-z0-9_]+)_cc(s)?$TPOSTLBL[@]?$/o ) { # all CC_ symbols go in the data section... $chk[++$i] = $_; $chkcat[$i] = 'data';