I seem to have come across a bug in the compute_dominators() algorithm
with the following PIR:

.sub _main
L1:
   eq I0, 0, L3
L2:
   goto L5
L3:
L4:
L5:
   goto L7
L6:
   inc I0
L7:
   le I0, 0, L6
   end
.end

Running with:
$ ./parrot/parrot -d 32 testbug.pir 

I get "7 <-  0 1 2 5 7" for the dominators, which should instead be "7
<-  0 1 5 7" (no 2).  Blocks 6 and 8 also incorrectly include block 2
in their dominator set.

Can anyone confirm that this is incorrect behavior?  And possibly
suggest a fix or explanation?  Thanks,

-Curtis

Reply via email to