* src/pic/gen.c (genGenPointerSet): removed bogus assertion
authortecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 2 Mar 2007 21:52:21 +0000 (21:52 +0000)
committertecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 2 Mar 2007 21:52:21 +0000 (21:52 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4661 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/pic/gen.c

index 657b86d02d13c189a0b7dfbf7f39c656a2b9464f..0f94c25095eaadc2362cab5be98870dfe67a7486 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-03-02 Raphael Neider <rneider AT web.de>
+
+       * src/pic/gen.c (genGenPointerSet): removed bogus assertion
+
 2007-02-28 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
 
        * device/lib/mcs51/crtxclear.asm: pdata segment of 256 byte would not
index ad2ffec3c44dd11a37941d0fc425afc8c81b56bb..429e44a284e4b19df5f888fa9c3cfe2a5d5dca77 100644 (file)
@@ -9641,7 +9641,16 @@ static void genGenPointerSet (operand *right, operand *result, iCode *ic)
          int size = AOP_SIZE(right);
          int idx = 0;
 
-         assert (size == getSize(OP_SYM_ETYPE(result)));
+         /* The following assertion fails for
+          *   struct foo { char a; char b; } bar;
+          *   void demo(struct foo *dst, char c) { dst->b = c; }
+          * as size will be 1 (sizeof(c)), whereas dst->b will be accessed
+          * using (((char *)dst)+1), whose OP_SYM_ETYPE still is struct foo
+          * of size 2.
+          * The frontend seems to guarantee that IC_LEFT has the correct size,
+          * it works fine both for larger and smaller types of `char c'.
+          * */
+         //assert (size == getSize(OP_SYM_ETYPE(result)));
          assert (size > 0 && size <= 4);
 
          /* pass arguments */