* src/asm.c (printILine): Fixed bug #811015
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2908
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2003-09-26 Erik Petrich <epetrich@ivorytower.norman.ok.us>
+
+ * src/SDCCdflow.c (computeDataFlow): Fixed bug #810746
+ * src/asm.c (printILine): Fixed bug #811015
+
2003-09-22 Jesus Calvino-Fraga <jesusc@ece.ubc.ca>
*link/z80/lklibr.c, as/mcs51/lklibr.c: Improved memory allocation and
2003-09-22 Jesus Calvino-Fraga <jesusc@ece.ubc.ca>
*link/z80/lklibr.c, as/mcs51/lklibr.c: Improved memory allocation and
/*-----------------------------------------------------------------*/
/* computeDataFlow - does computations for data flow accross blocks */
/*-----------------------------------------------------------------*/
/*-----------------------------------------------------------------*/
/* computeDataFlow - does computations for data flow accross blocks */
/*-----------------------------------------------------------------*/
+ set *oldOutExprs = NULL;
+ bitVect *oldOutDefs = NULL;
int firstTime;
eBBlock *pBlock;
int firstTime;
eBBlock *pBlock;
/* get blocks that can come to this block */
pred = edgesTo (ebbs[i]);
/* get blocks that can come to this block */
pred = edgesTo (ebbs[i]);
- /* make a copy of the outExpressions : to be */
+ /* make a copy of the outExpressions or outDefs : to be */
- oldOut = setFromSet (ebbs[i]->outExprs);
+ if (optimize.global_cse)
+ oldOutExprs = setFromSet (ebbs[i]->outExprs);
+ else
+ oldOutDefs = bitVectCopy (ebbs[i]->outDefs);
setToNull ((void **) &ebbs[i]->inDefs);
/* indefitions are easy just merge them by union */
setToNull ((void **) &ebbs[i]->inDefs);
/* indefitions are easy just merge them by union */
cseBBlock (ebbs[i], TRUE, ebbs, count);
/* if it change we will need to iterate */
cseBBlock (ebbs[i], TRUE, ebbs, count);
/* if it change we will need to iterate */
- change += !isSetsEqualWith (ebbs[i]->outExprs, oldOut, isCseDefEqual);
+ if (optimize.global_cse)
+ change += !isSetsEqualWith (ebbs[i]->outExprs, oldOutExprs, isCseDefEqual);
+ else
+ change += !bitVectEqual (ebbs[i]->outDefs, oldOutDefs);
}
if (!change) /* iterate till no change */
}
if (!change) /* iterate till no change */
// stuff the pipe with the readable icode
pipeStream=fdopen(filedes[1],"w");
// stuff the pipe with the readable icode
pipeStream=fdopen(filedes[1],"w");
- icTab->iCodePrint(pipeStream, ic, icTab->printName);
+ if (ic->op != INLINEASM)
+ icTab->iCodePrint(pipeStream, ic, icTab->printName);
+ else
+ fprintf(pipeStream, "inline\n");
// it really needs an extra push
fflush(pipeStream);
// now swallow it
// it really needs an extra push
fflush(pipeStream);
// now swallow it