[Issue 13193] Extreme slowdown in compilation time of OpenSSL in Tango for optimized build

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun Jul 27 22:18:26 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=13193

--- Comment #7 from Walter Bright <bugzilla at digitalmars.com> ---
Thank you, Nils, for providing the test case. I'd argue that it is not really a
regression, as the optimizer has at least been exhibiting this behavior for the
last couple versions. The PR Kenji identified did make the slowdown appear in
Jacob's code, even though as you found, a minor rearrangement shows the problem
regardless.

I'd also it's not really a showstopper, since the compiler does (eventually)
complete. By cutting down the number of function calls in one function, the
optimizer times can be improved.

But it is something I'd like to address. Turning on the Digital Mars C++
profiler yields the top 10 time consumers:

  Num          Tree        Func        Per
  Calls        Time        Time        Call

     13    24172807    10679826      821525     void cdecl copyprop()
215227791     9896739     9896739           0     unsigned cdecl
vec_index(unsigned ,unsigned *)
    929     3606016     3181392        3424     void cdecl flowcp()
8777409      375222      375222           0     int cdecl ERTOL(elem *)
   3650      212113      114724          31     LIST *cdecl listrds(unsigned
*,elem *,unsigned *)
 543837       39448       39448           0     void cdecl vec_subass(unsigned
*,unsigned *)
 541398       38649       38649           0     void cdecl vec_orass(unsigned
*,unsigned *)
     25       41064       37402        1496     void cdecl flowae()
 543032       34477       33198           0     unsigned *cdecl
vec_calloc(unsigned )
 681074       33198       31611           0     void cdecl vec_free(unsigned *)
      8       64767       23682        2960     void cdecl builddags()
     17       87772       22527        1325     void cdecl boolopt()
   7452       21745       21745           2     void cdecl updaterd(elem
*,unsigned *,unsigned *)
 374313       16950       16950           0     int cdecl el_match(elem *,elem
*)
 268038       11610       11610           0     int cdecl el_noreturn(elem *)
 135687       11740       10788           0     unsigned *cdecl
vec_clone(unsigned *)
 132910        9746        9746           0     void cdecl vec_andass(unsigned
*,unsigned *)
 176436        7532        7532           0     int cdecl el_appears(elem
*,Symbol *)
  92377        4666        4645           0     LIST *cdecl list_prepend(LIST
**,void *)
     13        4675        3940         303     void cdecl rmdeadass()
  16532        2959        2959           0     void *cdecl
mem_fmalloc(unsigned )
   7419        5351        2887           0     elem *cdecl el_calloc()
  17299     9741091        2840           0     _codelem

Looks like I need to take a look at copyprop().

--


More information about the Digitalmars-d-bugs mailing list