-------------------------------------------------------------------------*/
#include "common.h"
-#include "newalloc.h"
int eBBNum = 0;
set *graphEdges = NULL; /* list of edges in this flow graph */
{
eBBlock *ebb;
- ebb = Safe_calloc (1, sizeof (eBBlock));
+ ebb = Safe_alloc (sizeof (eBBlock));
return ebb;
}
{
edge *ep;
- ep = Safe_calloc (1, sizeof (edge));
+ ep = Safe_alloc (sizeof (edge));
ep->from = from;
ep->to = to;
if (!dumpFilesPtr->filePtr) {
// not used before, create it
- strcpy (scratchFileName, srcFileName);
- strcat (scratchFileName, dumpFilesPtr->ext);
+ strncpyz (scratchFileName, dstFileName, PATH_MAX);
+ strncatz (scratchFileName, dumpFilesPtr->ext, PATH_MAX);
if (!(dumpFilesPtr->filePtr = fopen (scratchFileName, "w"))) {
werror (E_FILE_OPEN_ERR, scratchFileName);
exit (1);
} else {
file = stdout;
}
-
+
+ if (currFunc)
+ fprintf(file,"------------- Func %s -------------\n",currFunc->name);
for (sym = hTabFirstItem (liveRanges, &k); sym;
sym = hTabNextItem (liveRanges, &k))
{
{
fprintf (file, "}{ sir@ %s", sym->usl.spillLoc->rname);
}
- fprintf (file, "}");
+ fprintf (file, "} clashes with ");
+ bitVectDebugOn(sym->clashes,file);
fprintf (file, "\n");
}
for (i = 0; i < count; i++)
{
fprintf (of, "\n----------------------------------------------------------------\n");
- fprintf (of, "Basic Block %s : loop Depth = %d noPath = %d , lastinLoop = %d\n",
+ fprintf (of, "Basic Block %s : loop Depth(lSeq) = %d(%d) noPath = %d , lastinLoop = %d\n",
ebbs[i]->entryLabel->name,
ebbs[i]->depth,
+ (0 /* for now */ &
+ ebbs[i]->depth) ? findLoopEndSeq(ebbs[i]->partOfLoop) : 0,
ebbs[i]->noPath,
ebbs[i]->isLastInLoop);
fprintf (of, "\ndefines bitVector :");
bitVectDebugOn (ebbs[i]->ldefs, of);
fprintf (of, "\npointers Set bitvector :");
bitVectDebugOn (ebbs[i]->ptrsSet, of);
+ if (ebbs[i]->isLastInLoop) {
+ fprintf (of, "\nInductions Set bitvector :");
+ bitVectDebugOn (ebbs[i]->linds, of);
+ }
fprintf (of, "\n----------------------------------------------------------------\n");
printiCChain (ebbs[i]->sch, of);
}
ebb->entryLabel = ic->argLabel.label;
else
{
- sprintf (buffer, "_eBBlock%d", eBBNum++);
+ SNPRINTF (buffer, sizeof(buffer), "_eBBlock%d", eBBNum++);
ebb->entryLabel = newSymbol (buffer, 1);
ebb->entryLabel->key = labelKey++;
}
{
ebb->hasFcall = 1;
if (currFunc)
- currFunc->hasFcall = 1;
+ FUNC_HASFCALL(currFunc->type) = 1;
}
/* if the next one is a label */
void
remiCodeFromeBBlock (eBBlock * ebb, iCode * ic)
{
+ wassert (ic->seq>=ebb->fSeq && ic->seq<=ebb->lSeq);
if (ic->prev)
ic->prev->next = ic->next;
else
/* allocate for the first entry */
- ebbs = Safe_calloc (1, sizeof (eBBlock **));
+ ebbs = Safe_alloc (sizeof (eBBlock **));
while (loop)
{
{
bitVectUnSetBit (OP_USES (IC_COND (ic)), ic->key);
IC_COND (ic) = operandFromOperand (dest);
- OP_USES (dest) = bitVectSetBit (OP_USES (dest), ic->key);
+ OP_USES_SET ((dest), bitVectSetBit (OP_USES (dest), ic->key));
continue;
}
bitVectUnSetBit (OP_USES (IC_RIGHT (ic)), ic->key);
IC_RIGHT (ic) = operandFromOperand (dest);
IC_RIGHT (ic)->isaddr = 0;
- OP_USES (dest) = bitVectSetBit (OP_USES (dest), ic->key);
+ OP_USES_SET ((dest), bitVectSetBit (OP_USES (dest), ic->key));
}
if (isOperandEqual (IC_LEFT (ic), src))
IC_LEFT (ic) = operandFromOperand (dest);
IC_LEFT (ic)->isaddr = 0;
}
- OP_USES (dest) = bitVectSetBit (OP_USES (dest), ic->key);
+ OP_USES_SET ((dest), bitVectSetBit (OP_USES (dest), ic->key));
}
/* special case for pointer sets */
bitVectUnSetBit (OP_USES (IC_RESULT (ic)), ic->key);
IC_RESULT (ic) = operandFromOperand (dest);
IC_RESULT (ic)->isaddr = 1;
- OP_USES (dest) = bitVectSetBit (OP_USES (dest), ic->key);
+ OP_USES_SET ((dest), bitVectSetBit (OP_USES (dest), ic->key));
}
}
}