]> git.gag.com Git - fw/sdcc/commitdiff
* src/mcs51/gen.c (genCall): fixed bug 1457608
authormaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 5 Apr 2006 08:55:37 +0000 (08:55 +0000)
committermaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 5 Apr 2006 08:55:37 +0000 (08:55 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4078 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/mcs51/gen.c

index a0478f006a5a4fe123659c7a9b51090283309c01..91ca8c2093d2d3f9ce812c73211f7aa54bb122ed 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-04-05 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/mcs51/gen.c (genCall): fixed bug 1457608
+
 2006-03-30 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
 
        * doc/sdccman.lyx: reverted to version 1.129 of december as my latest
index 84729c5f2730912f6268611f98cd5dcd8406a934..85405e07018adae484e6d4a6afd7ffb9d6f37c17 100644 (file)
@@ -2719,6 +2719,7 @@ genCall (iCode * ic)
   bool accuse = FALSE;
   bool accPushed = FALSE;
   bool resultInF0 = FALSE;
+  bool assignResultGenerated = FALSE;
 
   D(emitcode(";     genCall",""));
 
@@ -2801,6 +2802,7 @@ genCall (iCode * ic)
       _G.accInUse--;
 
       accuse = assignResultValue (IC_RESULT (ic), IC_LEFT (ic));
+      assignResultGenerated = TRUE;
 
       freeAsmop (IC_RESULT (ic), NULL, ic, TRUE);
     }
@@ -2817,7 +2819,8 @@ genCall (iCode * ic)
               accPushed = TRUE;
             }
           if (IS_BIT (OP_SYM_ETYPE (IC_LEFT (ic))) &&
-              IS_BIT (OP_SYM_ETYPE (IC_RESULT (ic))))
+              IS_BIT (OP_SYM_ETYPE (IC_RESULT (ic))) &&
+              !assignResultGenerated)
             {
               emitcode ("mov", "F0,c");
               resultInF0 = TRUE;
@@ -2856,7 +2859,7 @@ genCall (iCode * ic)
 //  if (restoreBank)
 //    unsaveRBank (FUNC_REGBANK (dtype), ic, FALSE);
 
-  if (IS_BIT (OP_SYM_ETYPE (IC_RESULT (ic))))
+  if (IS_BIT (OP_SYM_ETYPE (IC_RESULT (ic))) && !assignResultGenerated)
     {
       if (resultInF0)
           emitcode ("mov", "c,F0");