From: johanknol Date: Tue, 8 Apr 2003 10:35:53 +0000 (+0000) Subject: fixed bug #604575 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=ba3c921ca59c5aae4697feaf3b6e0a75dc4f0e6b;p=fw%2Fsdcc fixed bug #604575 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2493 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/src/SDCCicode.c b/src/SDCCicode.c index cc65ac06..038d91d5 100644 --- a/src/SDCCicode.c +++ b/src/SDCCicode.c @@ -3544,9 +3544,25 @@ ast2iCode (ast * tree,int lvl) case RIGHT_OP: return geniCodeRightShift (geniCodeRValue (left, FALSE), geniCodeRValue (right, FALSE)); - case CAST: + case CAST: +#if 1 // just in case Paul detects another sloc regression again :) + { + operand *op; + + // let's keep this simple: get the rvalue we need + op=geniCodeRValue (right, FALSE); + // now cast it to whatever we want + op=geniCodeCast (operandType(left), op, FALSE); + // if this is going to be used as an lvalue, make it so + if (tree->lvalue) { + op->isaddr=1; + } + return op; + } +#else // bug #604575 return geniCodeCast (operandType (left), geniCodeRValue (right, FALSE), FALSE); +#endif case '~': case '!':