[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