void ReplaceOpWithCheaperOp(operand **op, operand *cop) {
#ifdef RANGEHUNT
- printf ("ReplaceOpWithCheaperOp %s with %s: ",
- IS_SYMOP((*op)) ? OP_SYMBOL((*op))->name : "!SYM",
+ printf ("ReplaceOpWithCheaperOp %s with %s: ",
+ IS_SYMOP((*op)) ? OP_SYMBOL((*op))->name : "!SYM",
IS_SYMOP(cop) ? OP_SYMBOL(cop)->name : "!SYM");
// if op is a register equivalent
if (IS_ITEMP(cop) && OP_SYMBOL((*op))->isreqv) {
/* replaceAllSymBySym - replaces all operands by operand in an */
/* instruction chain */
/*-----------------------------------------------------------------*/
-void
+void
replaceAllSymBySym (iCode * ic, operand * from, operand * to, bitVect ** ndpset)
{
iCode *lic;
IS_ITEMP (IC_RESULT (cdp->diCode)))
*opp = IC_RESULT (cdp->diCode);
- if ((*opp) &&
- (isOperandLiteral(*opp) || !checkSign ||
+ if ((*opp) &&
+ (isOperandLiteral(*opp) || !checkSign ||
(checkSign &&
IS_SPEC(operandType (cop)) && IS_SPEC(operandType (*opp)) &&
(SPEC_USIGN(operandType (cop))==SPEC_USIGN(operandType (*opp)) &&
*opp = operandFromOperand (*opp);
(*opp)->isaddr = cop->isaddr;
}
-
+
if (IS_SPEC(operandType (cop)) && IS_SPEC(operandType (*opp)) &&
SPEC_NOUN(operandType(cop)) != SPEC_NOUN(operandType(*opp)))
{
- // special case: we can make an unsigned char literal
+ // special case: we can make an unsigned char literal
// into an int literal with no cost.
if (isOperandLiteral(*opp)
&& SPEC_NOUN(operandType(*opp)) == V_CHAR
*opp = NULL;
return 0;
}
-
+
}
-
+
return 1;
}
/*-----------------------------------------------------------------*/
/* ifDefSymIs - if a definition is found in the set */
/*-----------------------------------------------------------------*/
-int
+int
ifDefSymIs (set * cseSet, operand * sym)
{
cseDef *loop;
/*-----------------------------------------------------------------*/
/* ifDiCodeIs - returns truw if diCode is same */
/*-----------------------------------------------------------------*/
-int
+int
ifDiCodeIs (set * cseSet, iCode * ic)
{
cseDef *loop;
{
ic->op = CAST;
IC_LEFT (ic)->type = TYPE;
+ IC_LEFT (ic)->isLiteral = 0;
setOperandType (IC_LEFT (ic), operandType (IC_RESULT (ic)));
}
return;
IC_RIGHT (ic) = IC_LEFT (ic);
IC_LEFT (ic) = op;
IC_LEFT (ic)->type = TYPE;
+ IC_LEFT (ic)->isLiteral = 0;
setOperandType (IC_LEFT (ic), operandType (IC_RESULT (ic)));
}
return;
/* if BITWISEAND then check if one of them is 0xff... */
/* if yes turn it into assignment */
{
- long val;
+ unsigned val;
switch (getSize (operandType (IC_RIGHT (ic))))
{
default:
return;
}
- if (((long) operandLitValue (IC_RIGHT (ic)) & val) == val)
+ if (((unsigned) operandLitValue (IC_RIGHT (ic)) & val) == val)
{
ic->op = '=';
IC_RIGHT (ic) = IC_LEFT (ic);
/* if BITWISEOR then check if one of them is 0xff... */
/* if yes turn it into 0xff... assignment */
{
- long val;
+ unsigned val;
switch (getSize (operandType (IC_RIGHT (ic))))
{
default:
return;
}
- if (((long) operandLitValue (IC_RIGHT (ic)) & val) == val)
+ if (((unsigned) operandLitValue (IC_RIGHT (ic)) & val) == val)
{
if (IS_OP_VOLATILE (IC_LEFT (ic)))
{
cseSet = setFromSet (ebb->inExprs);
/* these will be computed by this routine */
- setToNull ((void **) &ebb->outDefs);
- setToNull ((void **) &ebb->defSet);
- setToNull ((void **) &ebb->usesDefs);
- setToNull ((void **) &ebb->ptrsSet);
- setToNull ((void **) &ebb->addrOf);
- setToNull ((void **) &ebb->ldefs);
+ setToNull ((void *) &ebb->outDefs);
+ setToNull ((void *) &ebb->defSet);
+ setToNull ((void *) &ebb->usesDefs);
+ setToNull ((void *) &ebb->ptrsSet);
+ setToNull ((void *) &ebb->addrOf);
+ setToNull ((void *) &ebb->ldefs);
ebb->outDefs = bitVectCopy (ebb->inDefs);
bitVectDefault = iCodeKey;
/* if jumptable then mark the usage */
if (ic->op == JUMPTABLE)
{
- OP_USES(IC_JTCOND (ic))=
- bitVectSetBit (OP_USES (IC_JTCOND (ic)), ic->key);
- setUsesDefs (IC_JTCOND (ic), ebb->defSet,
- ebb->outDefs, &ebb->usesDefs);
+ if (IS_SYMOP (IC_JTCOND (ic)))
+ {
+ OP_USES(IC_JTCOND (ic)) =
+ bitVectSetBit (OP_USES (IC_JTCOND (ic)), ic->key);
+ setUsesDefs (IC_JTCOND (ic), ebb->defSet,
+ ebb->outDefs, &ebb->usesDefs);
+ }
continue;
}
/* update the spill location for this */
updateSpillLocation (ic,0);
- if (POINTER_SET (ic) &&
+ if (POINTER_SET (ic) &&
!(IS_BITFIELD (OP_SYMBOL (IC_RESULT (ic))->etype)))
{
pdop = NULL;
change = 1;
}
}
-
+
/* if left or right changed then do algebraic */
if (!computeOnly && change)
{
if (pdic && compareType (operandType (IC_RESULT (pdic)),
operandType (IC_RESULT (ic))) != 1)
pdic = NULL;
- if (pdic && port->cseOk && (*port->cseOk)(ic,pdic) == 0)
+ if (pdic && port->cseOk && (*port->cseOk)(ic,pdic) == 0)
pdic = NULL;
}
/* Alternate code */
if (pdic && IS_ITEMP(IC_RESULT(ic))) {
if (POINTER_GET(ic) && bitVectBitValue(ebb->ptrsSet,IC_LEFT(ic)->key)) {
- /* Mmm, found an equivalent pointer get at a lower level.
- This could be a loop however with the same pointer set
+ /* Mmm, found an equivalent pointer get at a lower level.
+ This could be a loop however with the same pointer set
later on */
} else {
/* if previous definition found change this to an assignment */
IC_LEFT(ic) = NULL;
IC_RIGHT(ic) = operandFromOperand(IC_RESULT(pdic));
SET_ISADDR(IC_RESULT(ic),0);
- SET_ISADDR(IC_RIGHT (ic),0);
+ SET_ISADDR(IC_RIGHT (ic),0);
}
}
}
}
- setToNull ((void **) &ebb->outExprs);
+ setToNull ((void *) &ebb->outExprs);
ebb->outExprs = cseSet;
ebb->outDefs = bitVectUnion (ebb->outDefs, ebb->defSet);
ebb->ptrsSet = bitVectUnion (ebb->ptrsSet, ebb->inPtrsSet);