X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCicode.c;h=9dde59a1a8856cee8eada9086a2db63caab71173;hb=c00cbb86e17a7d99ed213dfd73e80cc6a1bfe384;hp=cc65ac066028318a58201eaa772154e872c304c3;hpb=96ff919c3470720e4bf26c7d278c753a97eeef09;p=fw%2Fsdcc diff --git a/src/SDCCicode.c b/src/SDCCicode.c index cc65ac06..9dde59a1 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 0 // this indeed needs a second thought + { + 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, is it a bug ???? return geniCodeCast (operandType (left), geniCodeRValue (right, FALSE), FALSE); +#endif case '~': case '!':