large compile times for mlyacc
Matthew Fluet
fluet@CS.Cornell.EDU
Tue, 4 Dec 2001 18:34:42 -0500 (EST)
> By rolling back (directed-graph.sml), I assume you mean to 1.21? So
> if that didn't speed stuff up, it must have been the introduction of
> 1.21 that caused the slowdown, right?
----------------------------
revision 1.22
date: 2001/12/01 19:17:02; author: fluet; state: Exp; lines: +54 -2
loopForest returns an empty trees list.
The "simple" changes to loopForest that I added to compute the loop
nest forest in tree representation caused an insane slowdown on self
compiles. (nest > 25% of compile time). I don't know why -- I just
changed a List.foreach to a List.fold.
----------------------------
revision 1.21
date: 2001/11/30 13:50:44; author: fluet; state: Exp; lines: +53 -38
Changes too loop forest; added
trees: {headers: (* graph *) Node.t list,
loopNodes: (* graph *) Nope.t list} Tree.t list
as a representation of the loop forest.
----------------------------
revision 1.20
date: 2001/11/26 18:37:04; author: sweeks; state: Exp; lines: +5 -4
Use rem instead of destroy.
Rev 1.22 essentially undid the changes in 1.21, modulo keeping the
signature the same.
So, rev 1.22 and 1.20 should me almost identical, modulo returning an
empty trees list and the commented out code.
I can't say for certain whether or not the stuff introduced in 1.21 slowed
stuff down (I would think not, because the List.foreach -> List.fold
should be almost the same loop). My guess is that there really was a
slow-down before rev 1.20 was checked in.
Here's the interesting part. I checked in the codegen for using
loopForest in the codegen on September 27th. The latest release 20011006
has this code checked in, and I use the release all the time for
self-compiles, without problems.
So, something else between the release and now messed it up.
If you've got the time, I suggest really rolling back to rev. 1.20 for
directed-graph, deal with whatever type errors might come up (I don't
think you'll actually see anything) and see how that goes. I may have
just screwed up trying to roll back by hand (there were some changes I
thought would help; or at least not hurt).
If that doesn't help, then I would guess that we're missing an important
optimization that we were getting before. Considering how rapidly SSA
passes and the shrinker have been changing, that's not totally off the
wall.