{
newic = newiCode (IPUSH, right, NULL);
newic->parmPush = 1;
- bytesPushed+=4;
+ //bytesPushed+=4;
+ bytesPushed += getSize(operandType(right));
}
addiCodeToeBBlock (ebp, newic, ip);
{
newic = newiCode (IPUSH, left, NULL);
newic->parmPush = 1;
- bytesPushed+=4;
+ //bytesPushed+=4;
+ bytesPushed += getSize(operandType(left));
}
addiCodeToeBBlock (ebp, newic, ip);
newic->lineno = lineno;
sym_link *type = operandType (IC_RIGHT (ic));
int linenno = ic->lineno;
int bwd, su;
+ int bytesPushed=0;
ip = ic->next;
/* remove it from the iCode */
{
newic = newiCode (IPUSH, IC_RIGHT (ic), NULL);
newic->parmPush = 1;
+ bytesPushed += getSize(operandType(IC_RIGHT(ic)));
}
addiCodeToeBBlock (ebp, newic, ip);
newic->lineno = linenno;
/* make the call */
newic = newiCode (CALL, operandFromSymbol (func), NULL);
IC_RESULT (newic) = IC_RESULT (ic);
+ newic->parmBytes+=bytesPushed;
addiCodeToeBBlock (ebp, newic, ip);
newic->lineno = linenno;
sym_link *type = operandType (IC_LEFT (ic));
int lineno = ic->lineno;
int bwd, su;
+ int bytesPushed=0;
ip = ic->next;
/* remove it from the iCode */
{
newic = newiCode (IPUSH, IC_RIGHT (ic), NULL);
newic->parmPush = 1;
+ bytesPushed += getSize(operandType(IC_RIGHT(ic)));
}
addiCodeToeBBlock (ebp, newic, ip);
newic->lineno = lineno;
/* make the call */
newic = newiCode (CALL, operandFromSymbol (func), NULL);
IC_RESULT (newic) = IC_RESULT (ic);
+ newic->parmBytes+=bytesPushed;
addiCodeToeBBlock (ebp, newic, ip);
newic->lineno = lineno;
if (SKIP_IC (ic) ||
ic->op == IFX ||
- ic->op == RETURN)
+ ic->op == RETURN ||
+ ic->op == DUMMY_READ_VOLATILE)
continue;
/* if the result is volatile then continue */
/* if the result is a temp & isaddr then skip */
if (IC_RESULT (ic) && POINTER_SET (ic))
continue;
+
+ if (POINTER_GET (ic) && IS_VOLATILE (operandType (IC_LEFT (ic))->next))
+ continue;
/* if the result is used in the remainder of the */
/* block then skip */
continue;
kill = 1;
- }
+ }
kill:
/* kill this one if required */
port->assignRegisters (ebbs, count);
/* throw away blocks */
- setToNull ((void **) &graphEdges);
+ setToNull ((void *) &graphEdges);
ebbs = NULL;
return NULL;