summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ae9745e)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2429
4a8a32a2-be11-0410-ad9d-
d568d2c75423
unsigned int hasFcall:1; /* has a function call */
unsigned int noPath:1; /* there is no path from _entry to this block */
unsigned int isLastInLoop:1; /* is the last block in a loop */
unsigned int hasFcall:1; /* has a function call */
unsigned int noPath:1; /* there is no path from _entry to this block */
unsigned int isLastInLoop:1; /* is the last block in a loop */
- unsigned int hasConditionalExit; /* this block ends with a return or goto from a conditional block*/
+ struct eBBlock *isConditionalExitFrom; /* this block ends with a return or goto from a conditional block*/
symbol *entryLabel; /* entry label */
iCode *sch; /* pointer to start of code chain */
symbol *entryLabel; /* entry label */
iCode *sch; /* pointer to start of code chain */
- int j=i;
- while (j--) {
- if (ebbs[j]->ech && ebbs[j]->ech->op==IFX &&
- (isSymbolEqual(IC_TRUE(ebbs[j]->ech), ebbs[i]->entryLabel) ||
- isSymbolEqual(IC_FALSE(ebbs[j]->ech), ebbs[i]->entryLabel))) {
- ebbs[i]->hasConditionalExit=1;
- }
+ if (i && ebbs[i-1]->ech && ebbs[i-1]->ech->op==IFX) {
+ ebbs[i]->isConditionalExitFrom=ebbs[i-1];
}
}
} /* no instructions in the block */
}
}
} /* no instructions in the block */