[Bug middle-end/87256] hppa spends huge amount of time in synth_mult()
slyfox at inbox dot ru
gcc-bugzilla@gcc.gnu.org
Sat Sep 8 19:11:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87256
--- Comment #2 from Sergei Trofimovich <slyfox at inbox dot ru> ---
synth_mult() is called 57M times on this tiny sample.
I noticed there is a NUM_ALG_HASH_ENTRIES bucket size for already computed
algorithms for multiplication. The below tweak seems to workaround pathological
case:
--- a/gcc/expmed.h
+++ b/gcc/expmed.h
@@ -128,7 +128,7 @@ struct alg_hash_entry {
/* The number of cache/hash entries. */
#if HOST_BITS_PER_WIDE_INT == 64
-#define NUM_ALG_HASH_ENTRIES 1031
+#define NUM_ALG_HASH_ENTRIES 10311
#else
#define NUM_ALG_HASH_ENTRIES 307
#endif
$ ./xgcc -B. -O2 -fomit-frame-pointer -c -o bug.o bug.c -ftime-report
Time variable usr sys wall
GGC
phase setup : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 2%)
960 kB ( 62%)
phase parsing : 0.00 ( 0%) 0.00 ( 0%) 0.02 ( 4%)
109 kB ( 7%)
phase opt and generate : 0.39 (100%) 0.00 ( 0%) 0.46 ( 94%)
464 kB ( 30%)
preprocessing : 0.00 ( 0%) 0.00 ( 0%) 0.02 ( 4%)
9 kB ( 1%)
dominator optimization : 0.00 ( 0%) 0.00 ( 0%) 0.02 ( 4%)
1 kB ( 0%)
expand : 0.37 ( 95%) 0.00 ( 0%) 0.42 ( 86%)
50 kB ( 3%)
combiner : 0.01 ( 3%) 0.00 ( 0%) 0.01 ( 2%)
97 kB ( 6%)
initialize rtl : 0.01 ( 3%) 0.00 ( 0%) 0.00 ( 0%)
13 kB ( 1%)
verify RTL sharing : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 2%)
0 kB ( 0%)
TOTAL : 0.39 0.00 0.49
1543 kB
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --enable-checking=release to disable checks.
More information about the Gcc-bugs
mailing list