From 4ab9456bc01da32af2aaccf935a9db0e7d5c63f0 Mon Sep 17 00:00:00 2001 From: sdattalo Date: Sun, 11 Aug 2002 04:40:44 +0000 Subject: [PATCH] x = y >> 6; was failing if x and y were 16-bit ints git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2070 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/pic/gen.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pic/gen.c b/src/pic/gen.c index ae843d57..6ca5e3ec 100644 --- a/src/pic/gen.c +++ b/src/pic/gen.c @@ -6777,10 +6777,12 @@ static void shiftR2Left2Result (operand *left, int offl, /* don't crash result[offr] */ MOVA(aopGet(AOP(left),offl,FALSE,FALSE)); pic14_emitcode("xch","a,%s", aopGet(AOP(left),offl+MSB16,FALSE,FALSE)); - } else { + } +/* else { movLeft2Result(left,offl, result, offr); MOVA(aopGet(AOP(left),offl+MSB16,FALSE,FALSE)); } +*/ /* a:x >> shCount (x = lsb(result))*/ /* if(sign) @@ -6880,15 +6882,17 @@ static void shiftR2Left2Result (operand *left, int offl, emitpcode(POC_MOVWF,popGet(AOP(result),offr+MSB16)); emitpcode(POC_RLFW, popGet(AOP(left),offl+MSB16)); emitpcode(POC_MOVWF,popGet(AOP(result),offr)); - emitpcode(POC_RLFW, popGet(AOP(result),offr+MSB16)); + emitpcode(POC_RLF, popGet(AOP(result),offr+MSB16)); + emitpcode(POC_RLF, popGet(AOP(result),offr)); + emitpcode(POC_RLFW, popGet(AOP(result),offr+MSB16)); emitpcode(POC_ANDLW,popGetLit(0x03)); if(sign) { emitpcode(POC_BTFSC, newpCodeOpBit(aopGet(AOP(result),offr+MSB16,FALSE,FALSE),0,0)); emitpcode(POC_IORLW,popGetLit(0xfc)); } - emitpcode(POC_MOVWF,popGet(AOP(result),offr)); - emitpcode(POC_RLF, popGet(AOP(result),offr)); + emitpcode(POC_MOVWF,popGet(AOP(result),offr+MSB16)); + //emitpcode(POC_RLF, popGet(AOP(result),offr)); } -- 2.30.2