http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53852

--- Comment #2 from Michael Matz <matz at gcc dot gnu.org> 2012-07-04 12:11:10 
UTC ---
ISL generally has speed problems.  For instance graphite/interchange-8.c
needs quite long to compile (well, several seconds), and _all_ of the runtime
is basically in malloc/free/copy activity of isl_int's.  It does 10 million
calls to malloc/free, 51 million to gmpz_set, 15 million to gmpz_addmul,
9 million to gmpz_mul, 51 million gmpn_copi, and so on.

Huge causes for this excessive gmp activity is compute_deps ->
isl_union_map_compute_flow.  Three calls of the latter are responsible
for 76% compile time, and it's all in gmp activity.  It's then
doing 16x isl_access_info_compute_flow, 210x isl_map_partial_lexmax,
307x isl_map_apply_range and isl_map_intersect, which do 10000x 
isl_basic_map_intersect and 7400x isl_basic_map_apply_range.  That causes
25000x isl_basic_map_simplify and 61000x isl_basic_map_alloc_space.
That results in 82000x isl_blk_alloc, which ultimately does the excessive
number of malloc and gmp_init calls.  And it results in several million
calls to the simplify primitives
(isl_seq_elim->isl_seq_combine->gmp_addmul/mul/set, isl_seq_copy, and
isl_seq_abs_min_non_zero).

Reply via email to