[project @ 1999-12-02 17:57:13 by simonmar]
authorsimonmar <unknown>
Thu, 2 Dec 1999 17:57:15 +0000 (17:57 +0000)
committersimonmar <unknown>
Thu, 2 Dec 1999 17:57:15 +0000 (17:57 +0000)
Change the convention for cost-centre labels to be <name>_cc and
cost-centre stacks to be <name>_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.

ghc/compiler/absCSyn/CLabel.lhs
ghc/compiler/profiling/CostCentre.lhs
ghc/driver/ghc-asm.lprl

index 644a13d..3d0ade9 100644 (file)
@@ -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. <type> 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
index ac69699..5d0ef91 100644 (file)
@@ -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
index a09a1db..193e710 100644 (file)
@@ -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';