mlyacc bug
Stephen Weeks
MLton@sourcelight.com
Fri, 13 Oct 2000 16:58:18 -0700 (PDT)
> It doesn't diverge. It just takes a really long time. On my 733 MhZ machine,
> it took 1410 seconds. This is extremely bizarre, since the change to
> backend.fun was for stuff after register allocation, and so should not have
> affected register allocation at all. And the previous version took about 100s,
> IIRC. I am investigating.
We confused ourselves. The change to backend did not make a difference.
Register allocation was already slow in 20001004. It was fast (94s), however,
in 20000906. Looking at the size of the CPS outputs I see that there were 8374
primexps in the 20000906 version and 51065 in the 20001004 version. In
20001004, the inlining pass blew up the size by a factor of 7.5, while in
20000906, it blew up the size < 2x.
The only reasonable conclusion that I can see is that the new pass that I added
on 2000-10-2 to remove useless constructors, globals, and functions exposed some
information to subsequent passes that caused the inliner to blow up. I'm still
looking into it.