From c7213e51f3526a7559d03919d64907ccc0b25aa7 Mon Sep 17 00:00:00 2001 From: johanknol Date: Tue, 21 Aug 2001 11:58:34 +0000 Subject: [PATCH] fixed bug #451453 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1159 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCC.lex | 2 +- src/ds390/gen.c | 13 +++++++++---- src/mcs51/gen.c | 13 +++++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/SDCC.lex b/src/SDCC.lex index 425508ad..cc81d1ec 100644 --- a/src/SDCC.lex +++ b/src/SDCC.lex @@ -547,7 +547,7 @@ int process_pragma(char *s) } if (strncmp(cp,PRAGMA_NOLOOPREV,strlen(PRAGMA_NOLOOPREV)) == 0) { - doPragma(P_EXCLUDE,NULL); + doPragma(P_LOOPREV,NULL); return 0; } diff --git a/src/ds390/gen.c b/src/ds390/gen.c index a9cf9567..21315fde 100644 --- a/src/ds390/gen.c +++ b/src/ds390/gen.c @@ -3841,12 +3841,17 @@ genMinus (iCode * ic) else { /* first add without previous c */ - if (!offset) - emitcode ("add", "a,#0x%02x", - (unsigned int) (lit & 0x0FFL)); - else + if (!offset) { + if (!size && lit==-1) { + emitcode ("dec", "a"); + } else { + emitcode ("add", "a,#0x%02x", + (unsigned int) (lit & 0x0FFL)); + } + } else { emitcode ("addc", "a,#0x%02x", (unsigned int) ((lit >> (offset * 8)) & 0x0FFL)); + } } if (pushResult) diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index ccaacd08..408e9116 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -3251,12 +3251,17 @@ genMinus (iCode * ic) else { /* first add without previous c */ - if (!offset) - emitcode ("add", "a,#0x%02x", - (unsigned int) (lit & 0x0FFL)); - else + if (!offset) { + if (!size && lit==-1) { + emitcode ("dec", "a"); + } else { + emitcode ("add", "a,#0x%02x", + (unsigned int) (lit & 0x0FFL)); + } + } else { emitcode ("addc", "a,#0x%02x", (unsigned int) ((lit >> (offset * 8)) & 0x0FFL)); + } } aopPut (AOP (IC_RESULT (ic)), "a", offset++); } -- 2.39.5