if (ebbs[i]->ech)
{
-#if 0
if (ebbs[i]->ech->op != GOTO &&
ebbs[i]->ech->op != RETURN &&
ebbs[i]->ech->op != JUMPTABLE)
-#endif
{
int j = i + 1;
addSuccessor (ebbs[i], ebbs[j]); /* add it */
}
+ else
+ {
+ if (i && ebbs[i-1]->ech && ebbs[i-1]->ech->op==IFX) {
+ ebbs[i]->isConditionalExitFrom=ebbs[i-1];
+ }
+ }
} /* no instructions in the block */
/* could happen for dummy blocks */
else
switch (ic->op)
{
case GOTO: /* goto has edge to label */
- succ = eBBWithEntryLabel (ebbs, ic->argLabel.label, count);
+ succ = eBBWithEntryLabel (ebbs, ic->label, count);
break;
case IFX: /* conditional jump */
if (loop->dfnum > idom->dfnum)
idom = loop;
- setToNull ((void **) &iset);
+ setToNull ((void *) &iset);
return idom;
}
for (i = 0; i < count; i++)
{
- setToNull ((void **) &ebbs[i]->predList);
- setToNull ((void **) &ebbs[i]->domVect);
- setToNull ((void **) &ebbs[i]->succList);
- setToNull ((void **) &ebbs[i]->succVect);
+ setToNull ((void *) &ebbs[i]->predList);
+ setToNull ((void *) &ebbs[i]->domVect);
+ setToNull ((void *) &ebbs[i]->succList);
+ setToNull ((void *) &ebbs[i]->succVect);
ebbs[i]->visited = 0;
ebbs[i]->dfnum = 0;
}
/* sort it back by block number */
qsort (ebbs, saveCount, sizeof (eBBlock *), bbNumCompare);
- setToNull ((void **) &graphEdges);
+ setToNull ((void *) &graphEdges);
/* this will put in the */
/* successor information for each blk */
eBBSuccessors (ebbs, count);