Kevin GLYNN writes:
> 
> I have written a small application which uses Mutable Arrays to fixpoint
> boolean equations.  It builds and runs, but slowly! In an attempt to see
> what is going on I am trying to build a profiled version.  I have built
> all modules with -O2 -prof -auto-all -fvia-C (via-C doesn't seem to
> solve the problem). However, this refuses to link because of undefined
> symbols, here is a bit of output from the build ....
> 
 ...
> Undefined                     first referenced
>  symbol                           in file
> CC_STRobddZdSTRobddZdinitZurobddZdAUTO_struct fixpoint.o
> CC_STRobddZdSTRobddZdinitZurobddZdAUTOZdDUPD_struct fixpoint.o
> CC_STRobddZdSTRobddZdinitZurobddZdAUTO fixpoint.o
> CC_STRobddZdSTRobddZdinitZurobddZdAUTOZdDUPD fixpoint.o
> ld: fatal: Symbol referencing errors. No output written to ht
> gmake: *** [ht] Error 1
> 

Hi,

you don't say what version you're using, but I'm guessing it's 3.01.
There'a a couple of patches that should fix the problem of
cross-module scc inlinings for 3.01 - appended at the end.

Pls let us know if this doesn't fix things.

--Sigbjorn

*** ghc/compiler/profiling/CostCentre.lhs       1998/02/26 13:47:07     1.19
--- ghc/compiler/profiling/CostCentre.lhs       1998/03/12 12:23:33
***************
*** 425,429 ****
  
      ---------------
!     do_dupd sty ADupdCC str = if (friendly_sty sty) then str ++ "/DUPD" else str
      do_dupd _   _       str = str
  \end{code}
--- 425,429 ----
  
      ---------------
!     do_dupd sty ADupdCC str = if (debugStyle sty) then str ++ "/DUPD" else str
      do_dupd _   _       str = str
  \end{code}

*** ghc/compiler/profiling/CostCentre.lhs       1998/02/09 12:53:44     1.18
--- ghc/compiler/profiling/CostCentre.lhs       1998/02/26 13:29:01
***************
*** 386,394 ****
            module_kind = do_caf is_caf (moduleString mod_name ++ '/':
                                               basic_kind)
!             grp_str   = if (_NULL_ grp_name) then mod_name else grp_name
!             full_kind = do_caf is_caf
!                        (moduleString mod_name  ++ 
!                         ('/' : _UNPK_ grp_str) ++ 
!                         ('/' : basic_kind))
        in
          if (friendly_sty sty) then
--- 386,401 ----
            module_kind = do_caf is_caf (moduleString mod_name ++ '/':
                                               basic_kind)
!             grp_str     = [] 
!             {- TODO: re-instate this once interface file lexer
!              handles groups.
!               grp_str     = 
!                  if (_NULL_ grp_name) then 
!                   [] 
!                else 
!                   '/' : (_UNPK_ grp_name)
!           -}
!             full_kind   = do_caf is_caf
!                                (moduleString mod_name  ++ 
!                                 grp_str ++ ('/' : basic_kind))
        in
          if (friendly_sty sty) then
***************
*** 407,412 ****
  
        do_kind (UserCC name) = _UNPK_ name
!       do_kind (AutoCC id)   = do_id id ++ (if (friendly_sty sty) then "/AUTO" else 
"")
!       do_kind (DictCC id)   = do_id id ++ (if (friendly_sty sty) then "/DICT" else 
"")
  
          {-
--- 414,419 ----
  
        do_kind (UserCC name) = _UNPK_ name
!       do_kind (AutoCC id)   = do_id id ++ (if (debugStyle sty) then "/AUTO" else "")
!       do_kind (DictCC id)   = do_id id ++ (if (debugStyle sty) then "/DICT" else "")
  
          {-

Reply via email to