[tree-ssa] Insert on edge comment
Andrew MacLeod
amacleod@redhat.com
Tue Jun 3 12:01:00 GMT 2003
On Tue, 2003-06-03 at 01:01, Daniel Berlin wrote:
>
> >> Like so:
> >>
> >> # BLOCK 0. PRED: -1. SUCC: 1.
> >> pretmp.4_24 = in_9 + 1B; <<<<<<<<<< THIS
> >> while (1)
> >> {
> >>>>>>>>>>> SHOULD REALLY BE HERE
> >> # BLOCK 1
> >> (/compilerstuff/gcc-rw-ssa/gcc/gcc/testsuite/gcc.c-torture/execute/
> >> 20011126-2.c:25). PRED: 12 1 0. SUCC: 1 2.
> >>
> > What I dont understand is why where it is inserted doesn't work for
> > you?
> Because it causes an infinite loop in this testcase?
> :)
>
> > It'll be executed just before entering the loop, which is what the edge
> > (0,1) represents. Executed only upon entry to the loop. You are trying
> > to make LOOP_EXPR more complicated than it is.
> >
> > BB0
> > LOOP_EXPR
> > |
> > BB1
> > BODY
> >
> > is funcationally identical to
> >
> > BB0
> > goto loop_body_label;
> > BB1
> > loop_body_label:
> > BODY
> > goto loop_body_label;
>
>
> The difference is that the second will cause PRE to insert in the right
> place, and the first will not.
> I tried it exactly as described, and get the correct result using the
> latter form explicitly in the code, and with a while loop, it infinite
> loops because of the placement you describe.
> PRE doesn't know it's a LOOP_EXPR, as i mentioned.
>
Send me your testcase.
So in the second case you insert it before the goto in BB0 and that
provides a different result than inserting it in front of the LOOP_EXPR?
Andrew
More information about the Gcc
mailing list