With current trunk, the attached testcase (~15Klines) takes about 15min to
compile (& 2.3Gb). To reproduce
gfortran -ffree-line-length-512 -g -c testcase.f90
The issue seems the clear from the timing report:
Execution times (seconds)
garbage collection : 1.37 ( 0%) usr 0.00 ( 0%) sys 1.37 ( 0%) wall
0 kB ( 0%) ggc
callgraph construction: 0.14 ( 0%) usr 0.01 ( 0%) sys 0.15 ( 0%) wall
12498 kB ( 2%) ggc
callgraph optimization: 202.27 (24%) usr 1.57 (21%) sys 204.09 (24%) wall
2304 kB ( 0%) ggc
cfg cleanup : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
0 kB ( 0%) ggc
CFG verifier : 1.32 ( 0%) usr 0.01 ( 0%) sys 1.32 ( 0%) wall
0 kB ( 0%) ggc
trivially dead code : 0.52 ( 0%) usr 0.00 ( 0%) sys 0.52 ( 0%) wall
0 kB ( 0%) ggc
df live regs : 0.30 ( 0%) usr 0.00 ( 0%) sys 0.30 ( 0%) wall
0 kB ( 0%) ggc
df reg dead/unused notes: 0.63 ( 0%) usr 0.01 ( 0%) sys 0.64 ( 0%) wall
25889 kB ( 4%) ggc
register information : 0.33 ( 0%) usr 0.01 ( 0%) sys 0.35 ( 0%) wall
0 kB ( 0%) ggc
alias analysis : 0.29 ( 0%) usr 0.00 ( 0%) sys 0.30 ( 0%) wall
8335 kB ( 1%) ggc
rebuild jump labels : 0.34 ( 0%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall
0 kB ( 0%) ggc
parser : 5.26 ( 1%) usr 0.10 ( 1%) sys 5.37 ( 1%) wall
59009 kB ( 9%) ggc
inline heuristics : 402.30 (48%) usr 3.15 (42%) sys 406.73 (48%) wall
0 kB ( 0%) ggc
tree gimplify : 0.21 ( 0%) usr 0.01 ( 0%) sys 0.21 ( 0%) wall
16835 kB ( 2%) ggc
tree eh : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
tree CFG construction : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
180 kB ( 0%) ggc
tree CFG cleanup : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
tree find ref. vars : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
7875 kB ( 1%) ggc
tree SSA other : 0.03 ( 0%) usr 0.01 ( 0%) sys 0.04 ( 0%) wall
0 kB ( 0%) ggc
tree operand scan : 0.03 ( 0%) usr 0.02 ( 0%) sys 0.05 ( 0%) wall
236 kB ( 0%) ggc
tree SSA to normal : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree SSA verifier : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree STMT verifier : 0.57 ( 0%) usr 0.06 ( 1%) sys 0.64 ( 0%) wall
0 kB ( 0%) ggc
callgraph verifier : 0.24 ( 0%) usr 0.00 ( 0%) sys 0.24 ( 0%) wall
0 kB ( 0%) ggc
expand : 207.53 (25%) usr 2.16 (29%) sys 210.04 (25%) wall
366504 kB (54%) ggc
integrated RA : 11.67 ( 1%) usr 0.15 ( 2%) sys 11.84 ( 1%) wall
8700 kB ( 1%) ggc
reload : 5.34 ( 1%) usr 0.20 ( 3%) sys 5.53 ( 1%) wall
163863 kB (24%) ggc
thread pro- & epilogue: 0.50 ( 0%) usr 0.00 ( 0%) sys 0.49 ( 0%) wall
174 kB ( 0%) ggc
final : 1.86 ( 0%) usr 0.10 ( 1%) sys 1.99 ( 0%) wall
7380 kB ( 1%) ggc
symout : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
4777 kB ( 1%) ggc
TOTAL : 843.24 7.57 852.70
684846 kB
--
Summary: slow compilation at -O0 (callgraph optimization, inline
heuristics, ggc expand )
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: compile-time-hog
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jv244 at cam dot ac dot uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38474