+2005-12-10 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * src/SDCCicode.c (fgeniCodeAssign): fixed bug 11369874, don't use
+ volatile variables as spill location
+
2005-12-10 Bernhard Held <bernhard AT bernhardheld.de>
* src/SDCCcse.c (findCheaperOp): fixed bug 1376320, copy signedness to
isOperandGlobal (left))
{
symbol *sym = NULL;
+ operand *newRight;
if (IS_TRUE_SYMOP (right))
sym = OP_SYMBOL (right);
ic = newiCode ('=', NULL, right);
- IC_RESULT (ic) = right = newiTempOperand (ltype, 0);
- SPIL_LOC (right) = sym;
+ IC_RESULT (ic) = newRight = newiTempOperand (ltype, 0);
+ /* avoid double fetch from volatile right, see bug 1369874 */
+ if (!isOperandVolatile (right, FALSE))
+ SPIL_LOC (newRight) = sym;
+ right = newRight;
ADDTOCHAIN (ic);
}