extern int avr_ptrRegReq;
extern int avr_nRegs;
-extern FILE *codeOutFile;
+extern struct dbuf_s *codeOutBuf;
#define RESULTONSTACK(x) \
(IC_RESULT(x) && IC_RESULT(x)->aop && \
IC_RESULT(x)->aop->type == AOP_STK )
else
vsprintf (lb, fmt, ap);
- while (isspace (*lbp))
+ while (isspace ((unsigned char)*lbp))
lbp++;
if (lbp && *lbp)
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);
return 0;
}
-#if defined(__BORLANDC__) || defined(_MSC_VER)
-#define STRCASECMP stricmp
-#else
-#define STRCASECMP strcasecmp
-#endif
-
/*-----------------------------------------------------------------*/
/* genFunction - generated code for function entry */
/*-----------------------------------------------------------------*/
(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;
recvCnt = 0;
/* print the allocation information */
if (allocInfo)
- printAllocInfo (currFunc, codeOutFile);
+ printAllocInfo (currFunc, codeOutBuf);
/* if debug information required */
if (options.debug && currFunc) {
debugFile->writeFunction (currFunc, lic);
peepHole (&lineHead);
/* now do the actual printing */
- printLine (lineHead, codeOutFile);
+ printLine (lineHead, codeOutBuf);
return;
}