* src/SDCCsymt.c (comparePtrType): fixed bug 1921073
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 20 Mar 2008 19:38:30 +0000 (19:38 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 20 Mar 2008 19:38:30 +0000 (19:38 +0000)
* support/regression/tests/bug1921073.c: new, added

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5109 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/SDCCsymt.c
support/regression/tests/bug1921073.c [new file with mode: 0644]

index f3d1602d303681db7f01211f8ba92c12bd5ed078..08d5d6d98c39edcb60de99ea1cbb9ece121fc201 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-20 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/SDCCsymt.c (comparePtrType): fixed bug 1921073
+       * support/regression/tests/bug1921073.c: new, added
+
 2008-03-17 Philipp Klaus Krause <pkk AT spth.de>
 
        * src/z80/SDCCpeeph.c.c (callFuncByName):
index d422daf5061e3c6af11810f6a3afb57349f7ad17..95228673de2130475328ddd33c044ce59e380624 100644 (file)
@@ -2050,7 +2050,7 @@ comparePtrType (sym_link * dest, sym_link * src, bool bMustCast)
   int res;
 
   if (IS_VOID (src->next) && IS_VOID (dest->next))
-    return 1;
+    return bMustCast ? -1 : 1;
   if ((IS_VOID (src->next) && !IS_VOID (dest->next)) ||
       (!IS_VOID (src->next) && IS_VOID (dest->next)) )
     return -1;
diff --git a/support/regression/tests/bug1921073.c b/support/regression/tests/bug1921073.c
new file mode 100644 (file)
index 0000000..4caa122
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    bug 1921073
+*/
+
+#include <testfwk.h>
+
+void f1(char c, const void * p)
+{
+       unsigned long v = (unsigned long)p;
+       c;
+       v;
+#if defined(SDCC_mcs51)
+       ASSERT((unsigned char)(v>>16)==0x80);
+#endif
+}
+
+void f2(const void * p)
+{
+       unsigned long v = (unsigned long)p;
+       v;
+#if defined(SDCC_mcs51)
+       ASSERT((unsigned char)(v>>16)==0x80);
+#endif
+}
+
+void
+testBug(void)
+{
+       f1(5, (code void *)0x1234);
+       f2((code void *)0x1234);
+}