Here's some further background:
On 14-Jan-06 I had done some hacking on my compiler using r11187, and
all worked fine when I did my last checkin that day. When I updated to
r11220 late on 16-Jan-06, doing the standard "make clean test" on my
code broke mysteriously in a number of places. I found two separate
syndromes by the time I had to quit:
1. Several of the cases were segfaulting; the only one I looked at
in detail was doing mark_context from Parrot_Closure_mark.
2. One case reported ":outer '_test_1' not found" where _test_1
existed but declared no lexicals (i.e. the "closure" had no variables
closed over); deleting the :outer construct from the inner sub made it
work. I was tracking this down when I stumbled onto the
compute_dominance_frontiers issue, which I assumed was yet another bug.
But maybe not. This evening, after updating to Parrot r11257, doing
"make clean test" on my code worked just fine. That suggests that
compute_dominance_frontiers became subtly broken between r11187 and
r11220, but too subtly for the test suite to detect it (which is kinda
scary).
FWIW, if I try 'parrot -O1' or 'parrot -O2' in r11257, it doesn't
even compile my code; it segfaults in branch_reorg in some place
completely different. Caveat optimizator, I guess . . .
-- Bob
P.S. I needed to resend this in order to get it into RT.