dumpEbbsToFileExt (DUMP_RAW1, ebbs, count);
/* do common subexpression elimination for each block */
- change = cseAllBlocks (ebbs, saveCount);
+ change = cseAllBlocks (ebbs, saveCount, FALSE);
/* dumpraw if asked for */
if (options.dump_raw)
/* global common subexpression elimination */
if (optimize.global_cse)
{
- change += cseAllBlocks (ebbs, saveCount);
+ change += cseAllBlocks (ebbs, saveCount, FALSE);
if (options.dump_gcse)
dumpEbbsToFileExt (DUMP_GCSE, ebbs, saveCount);
}
+ else
+ {
+ // compute the dataflow only
+ assert(cseAllBlocks (ebbs, saveCount, TRUE)==0);
+ }
/* kill dead code */
kchange = killDeadCode (ebbs, saveCount);
if (lchange || kchange)
{
computeDataFlow (ebbs, saveCount);
- change += cseAllBlocks (ebbs, saveCount);
+ change += cseAllBlocks (ebbs, saveCount, FALSE);
if (options.dump_loop)
dumpEbbsToFileExt (DUMP_LOOPG, ebbs, count);
}
+ /* sort it back by block number */
+ qsort (ebbs, saveCount, sizeof (eBBlock *), bbNumCompare);
+
if (!options.lessPedantic) {
// this is a good place to check missing return values
if (currFunc) {
- if (!IS_VOID(currFunc->type->next)) {
+ if (!IS_VOID(currFunc->etype)) {
eBBlock *bp;
// make sure all predecessors of the last block end in a return
for (bp=setFirstItem(ebbs[saveCount-1]->predList);
}
}
- /* sort it back by block number */
- qsort (ebbs, saveCount, sizeof (eBBlock *), bbNumCompare);
-
/* if cyclomatic info requested then print it */
if (options.cyclomatic)
printCyclomatic (ebbs, saveCount);