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.