(genModOneByte): removed needless psha/pula
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3809
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2005-07-22 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/hc08/gen.c (genMinus): fixed bug #1241835,
+ (genModOneByte): removed needless psha/pula
+
2005-07-22 Raphael Neider <rneider AT web.de>
* src/SDCCmain.c (linkEdit): initialized linkerScriptFileName,
2005-07-22 Raphael Neider <rneider AT web.de>
* src/SDCCmain.c (linkEdit): initialized linkerScriptFileName,
leftOp = AOP(IC_LEFT(ic));
rightOp = AOP(IC_RIGHT(ic));
leftOp = AOP(IC_LEFT(ic));
rightOp = AOP(IC_RIGHT(ic));
+
+ if (IS_AOP_A (rightOp))
+ {
+ loadRegFromAop ( hc08_reg_a, rightOp, offset);
+ accopWithAop (sub, leftOp, offset);
+ accopWithMisc ("nega", "");
+ storeRegToAop (hc08_reg_a, AOP (IC_RESULT (ic)), offset++);
+ goto release;
+ }
+
while (size--)
{
loadRegFromAop ( hc08_reg_a, leftOp, offset);
while (size--)
{
loadRegFromAop ( hc08_reg_a, leftOp, offset);
- accopWithAop(sub, rightOp, offset);
+ accopWithAop (sub, rightOp, offset);
storeRegToAop (hc08_reg_a, AOP (IC_RESULT (ic)), offset++);
sub = "sbc";
}
storeRegToAop (hc08_reg_a, AOP (IC_RESULT (ic)), offset++);
sub = "sbc";
}
loadRegFromAop (hc08_reg_h, AOP (left), 1);
loadRegFromAop (hc08_reg_a, AOP (left), 0);
emitcode ("div", "");
loadRegFromAop (hc08_reg_h, AOP (left), 1);
loadRegFromAop (hc08_reg_a, AOP (left), 0);
emitcode ("div", "");
- hc08_dirtyReg (hc08_reg_a, FALSE);
- hc08_dirtyReg (hc08_reg_h, FALSE);
- storeRegToFullAop (hc08_reg_h, AOP (result), FALSE);
hc08_freeReg (hc08_reg_a);
hc08_freeReg (hc08_reg_x);
hc08_freeReg (hc08_reg_a);
hc08_freeReg (hc08_reg_x);
+ hc08_dirtyReg (hc08_reg_h, FALSE);
+ storeRegToFullAop (hc08_reg_h, AOP (result), FALSE);
hc08_freeReg (hc08_reg_h);
return;
}
hc08_freeReg (hc08_reg_h);
return;
}
loadRegFromConst (hc08_reg_h, zero);
emitcode ("div", "");
loadRegFromConst (hc08_reg_h, zero);
emitcode ("div", "");
- hc08_dirtyReg (hc08_reg_x, FALSE);
- hc08_dirtyReg (hc08_reg_a, FALSE);
+ hc08_freeReg (hc08_reg_a);
+ hc08_freeReg (hc08_reg_x);
hc08_dirtyReg (hc08_reg_h, FALSE);
if (runtimeSign || compiletimeSign)
hc08_dirtyReg (hc08_reg_h, FALSE);
if (runtimeSign || compiletimeSign)