projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vsnprintf is not standard
[fw/sdcc]
/
src
/
avr
/
ralloc.c
diff --git
a/src/avr/ralloc.c
b/src/avr/ralloc.c
index b3d2a81f7e5296e2a382333759fd79c1016a9447..8159c84338fd023425e1f02d10fd489cd3f9479b 100644
(file)
--- a/
src/avr/ralloc.c
+++ b/
src/avr/ralloc.c
@@
-1339,10
+1339,10
@@
static int needsPair (iCode *ic)
int ikey = bitVectFirstBit(uses_defs);
iCode *uic = hTabItemWithKey(iCodehTab,ikey);
sym_link *otype = NULL;
int ikey = bitVectFirstBit(uses_defs);
iCode *uic = hTabItemWithKey(iCodehTab,ikey);
sym_link *otype = NULL;
+ bitVectUnSetBit(uses_defs,ikey);
if (!uic) continue;
otype = (IC_RIGHT(uic) ? operandType(IC_RIGHT(uic)) : NULL);
if (otype && IS_LITERAL(otype)) return 1;
if (!uic) continue;
otype = (IC_RIGHT(uic) ? operandType(IC_RIGHT(uic)) : NULL);
if (otype && IS_LITERAL(otype)) return 1;
- bitVectUnSetBit(uses_defs,ikey);
}
return 0;
}
}
return 0;
}
@@
-2073,8
+2073,11
@@
packRegisters (eBBlock * ebp)
if (POINTER_SET (ic))
OP_SYMBOL (IC_RESULT (ic))->uptr = 1;
if (POINTER_SET (ic))
OP_SYMBOL (IC_RESULT (ic))->uptr = 1;
- if (POINTER_GET (ic))
+ if (POINTER_GET (ic))
{
OP_SYMBOL (IC_LEFT (ic))->uptr = 1;
OP_SYMBOL (IC_LEFT (ic))->uptr = 1;
+ if (OP_SYMBOL (IC_LEFT(ic))->remat)
+ OP_SYMBOL (IC_RESULT (ic))->usl.spillLoc = NULL;
+ }
/* if the condition of an if instruction
is defined in the previous instruction then
/* if the condition of an if instruction
is defined in the previous instruction then
@@
-2218,8
+2221,8
@@
setDefaultRegs (eBBlock ** ebbs, int count)
else {
regsAVR[R26_IDX].type = (regsAVR[R26_IDX].type & ~REG_MASK) | REG_PTR;
regsAVR[R27_IDX].type = (regsAVR[R27_IDX].type & ~REG_MASK) | REG_PTR;
else {
regsAVR[R26_IDX].type = (regsAVR[R26_IDX].type & ~REG_MASK) | REG_PTR;
regsAVR[R27_IDX].type = (regsAVR[R27_IDX].type & ~REG_MASK) | REG_PTR;
- regsAVR[R
28_IDX].type = (regsAVR[R28
_IDX].type & ~REG_MASK) | REG_PTR;
- regsAVR[R
29_IDX].type = (regsAVR[R29
_IDX].type & ~REG_MASK) | REG_PTR;
+ regsAVR[R
30_IDX].type = (regsAVR[R30
_IDX].type & ~REG_MASK) | REG_PTR;
+ regsAVR[R
31_IDX].type = (regsAVR[R31
_IDX].type & ~REG_MASK) | REG_PTR;
}
/* registers 0-1 / 24-25 used as scratch */
}
/* registers 0-1 / 24-25 used as scratch */