From 5a2f57901a5aba5079b22ebd93c1abdbf3acfa27 Mon Sep 17 00:00:00 2001 From: maartenbrock Date: Wed, 5 Apr 2006 08:55:37 +0000 Subject: [PATCH] * src/mcs51/gen.c (genCall): fixed bug 1457608 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4078 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 4 ++++ src/mcs51/gen.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a0478f00..91ca8c20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-04-05 Maarten Brock + + * src/mcs51/gen.c (genCall): fixed bug 1457608 + 2006-03-30 Frieder Ferlemann * doc/sdccman.lyx: reverted to version 1.129 of december as my latest diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index 84729c5f..85405e07 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -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"); -- 2.47.2