* src/mcs51/gen.c (genReceive): fixed bug 1788177
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 5 Sep 2007 12:40:01 +0000 (12:40 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 5 Sep 2007 12:40:01 +0000 (12:40 +0000)
* support/regression/tests/bug1788177.c: new, added

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

ChangeLog
src/mcs51/gen.c
support/regression/tests/bug1788177.c [new file with mode: 0644]

index 4ffdad05b53793c258f0fc18d1d473d7dbed5595..4a877ea5ac583199c39fa128df98354085d14db0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,12 @@
+2007-09-05 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/mcs51/gen.c (genReceive): fixed bug 1788177
+       * support/regression/tests/bug1788177.c: new, added
+
 2007-09-04 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
 
-        * doc/sdccman.lyx: mentioned d52 and cmake, customizing startup code
-        * device/include/mcs51/lint.h added keyword __naked
+       * doc/sdccman.lyx: mentioned d52 and cmake, customizing startup code
+       * device/include/mcs51/lint.h added keyword __naked
 
 2007-09-04 Maarten Brock <sourceforge.brock AT dse.nl>
 
index e9f0df3c3907375972af4590d50cd15bb25af35b..20fefb21ba42e0f4f4840a65f9b65583bf819485 100644 (file)
@@ -11630,7 +11630,10 @@ genReceive (iCode * ic)
     }
   else if (ic->argreg > 12)
     { /* bit parameters */
-      if (OP_SYMBOL (IC_RESULT (ic))->regs[0]->rIdx != ic->argreg-5)
+      regs *reg = OP_SYMBOL (IC_RESULT (ic))->regs[0];
+
+      BitBankUsed = 1;
+      if (!reg || reg->rIdx != ic->argreg-5)
         {
           aopOp (IC_RESULT (ic), ic, FALSE);
           emitcode ("mov", "c,%s", rb1regs[ic->argreg-5]);
diff --git a/support/regression/tests/bug1788177.c b/support/regression/tests/bug1788177.c
new file mode 100644 (file)
index 0000000..acd7d87
--- /dev/null
@@ -0,0 +1,24 @@
+/*\r
+    bug 1788177\r
+*/\r
+\r
+#include <stdbool.h>\r
+#include <testfwk.h>\r
+\r
+#ifdef __bool_true_false_are_defined\r
+\r
+bool var;\r
+\r
+// no need to call this, it generates compiler error:\r
+//   Caught signal 11: SIGSEGV\r
+void foo(bool parm) {\r
+       var = parm;\r
+}\r
+\r
+#endif\r
+\r
+void\r
+testBug(void)\r
+{\r
+       ASSERT(1);\r
+}\r