* src/hc08/ralloc.c (canDefAccResult): multi-byte shift is unsafe for
authorepetrich <epetrich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 2 Sep 2004 14:24:21 +0000 (14:24 +0000)
committerepetrich <epetrich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 2 Sep 2004 14:24:21 +0000 (14:24 +0000)
accumulator result if it needs sign extension

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3474 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/hc08/ralloc.c

index 9e1e06ef96d5c2cea85770509a6ff8c7db6e8c22..437444f2bdd1ed54b9b8084d8e6aa54f2a06583d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-02 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/hc08/ralloc.c (canDefAccResult): multi-byte shift is unsafe for
+       accumulator result if it needs sign extension
+
 2004-09-02 Maarten Brock <sourceforge.brock AT dse.nl>
 
        * src/hc08/ralloc.c (canUseAccOperand): fixed comparison bug
index a91e687fc5ad9c7febc5d482aebb26a6701b09f9..fdb71ba6422a3db1db57868927702abad57ecd63 100644 (file)
@@ -2538,7 +2538,8 @@ canDefAccResult (iCode * ic)
         {
         case LEFT_OP:
         case RIGHT_OP:
-          return isOperandLiteral (IC_RIGHT (ic));
+          return isOperandLiteral (IC_RIGHT (ic))
+                  && SPEC_USIGN (operandType (IC_RESULT (ic)));
         case CALL:
         case PCALL:
         case '*':