else
vsprintf (lb, fmt, ap);
- while (isspace (*lbp))
+ while (isspace ((unsigned char)*lbp))
lbp++;
if (lbp && *lbp)
return lic;
}
/* if the operand used or deffed */
- if (bitVectBitValue(OP_USES(op),lic->key) || ((unsigned) lic->defKey == op->key)) {
+ if (bitVectBitValue(OP_USES(op),lic->key) || (lic->defKey == op->key)) {
return NULL;
}
lic = lic->next;
b) has a spill location */
if (sym->isspilt || sym->nRegs == 0) {
+ asmop *oldAsmOp = NULL;
+
/* rematerialize it NOW */
if (sym->remat) {
sym->aop = op->aop = aop = aopForRemat (sym);
/* else spill location */
if (sym->usl.spillLoc && getSize(sym->type) != getSize(sym->usl.spillLoc->type)) {
/* force a new aop if sizes differ */
+ oldAsmOp = sym->usl.spillLoc->aop;
sym->usl.spillLoc->aop = NULL;
}
sym->aop = op->aop = aop =
aopForSym (ic, sym->usl.spillLoc, result);
+ if (getSize(sym->type) != getSize(sym->usl.spillLoc->type)) {
+ /* Don't reuse the new aop, go with the last one */
+ sym->usl.spillLoc->aop = oldAsmOp;
+ }
aop->size = getSize (sym->type);
return;
}
break;
case AOP_REG:
- if (toupper (*s) != 'R') {
+ if (toupper ((unsigned char)*s) != 'R') {
if (s == zero) {
emitcode ("clr", "%s",
aop->aopu.aop_reg[offset]->name);
case AOP_CRY:
/* if used only for a condition code check */
- assert (toupper (*s) == 'R');
+ assert (toupper ((unsigned char)*s) == 'R');
if (offset == 0) {
emitcode ("xrl", "r0,r0");
emitcode ("cpi", "%s,0", s);
genCall (iCode * ic)
{
- /* if send set is not empty the assign */
+ /* if send set is not empty then assign */
if (_G.sendSet) {
iCode *sic;
int rnum = 16;
(int) floatFromVal (AOP (right)->aopu.
aop_lit);
int p2 = powof2 (lit);
- if (bitop == AVR_AND && p2) { /* right side is a power of 2 */
+ if (bitop == AVR_AND && (p2 >= 0)) { /* right side is a power of 2 */
l = aopGet (AOP (left), p2 / 8);
if (IC_TRUE (ifx)) {
emitcode ("sbrc", "%s,%d", l,
exit(1);
}
- sprintf(gpValStr, "#0x%d", gpVal);
+ sprintf(gpValStr, "#0x%x", gpVal);
aopPut (AOP (result), gpValStr, GPTRSIZE - 1);
}
goto release;