some minor improvements
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 6 Mar 2002 16:13:50 +0000 (16:13 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 6 Mar 2002 16:13:50 +0000 (16:13 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1992 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/SDCC.y
src/SDCCsymt.c
src/avr/gen.c
src/ds390/gen.c
src/mcs51/gen.c
src/pic/gen.c

index 4a7ac6cfc2e3ac0beb8062c66926002ba08a90db..ac4503c4488c5fe6aa7a4eab080a97969cb84fdb 100644 (file)
@@ -1146,6 +1146,12 @@ abstract_declarator2
      // $1 must be a pointer to a function
      sym_link *p=newLink();
      DCL_TYPE(p) = FUNCTION;
+     if (!$1) {
+       // ((void (code *) ()) 0) ()
+       $1=newLink();
+       DCL_TYPE($1)=CPOINTER;
+       $$ = $1;
+     }
      $1->next=p;
    }
    | abstract_declarator2 '(' parameter_type_list ')' {
index 09611d190f955e89ed3fcc7c52e0c6263f6856e2..b19179fca66aaf588d4ee5af978c3b5c703a68ff 100644 (file)
@@ -2454,7 +2454,8 @@ sym_link *typeFromStr (char *s)
            s++;
            break;
        default:
-           werror(E_INTERNAL_ERROR,"typeFromStr");
+           werror(E_INTERNAL_ERROR, __FILE__, __LINE__, 
+                  "typeFromStr: unknown type");
            break;
        }
        if (IS_SPEC(r) && usign) {
index c44c40a2595956aaee67b6f25a854976b6ffe2e6..651dab24039a843048a1072a0fc72193942024e8 100644 (file)
@@ -4588,6 +4588,10 @@ genPointerSet (iCode * ic, iCode *pi)
        case GPOINTER:
                genGenPointerSet (right, result, ic, pi);
                break;
+
+       default:
+         werror (E_INTERNAL_ERROR, __FILE__, __LINE__, 
+                 "genPointerSet: illegal pointer type");
        }
 
 }
index 21a0d2002810ba697dd77cacf683ee0b8f5aabce..95cefb1ce61932211ee9d0cbb0d5ad4a3f4cab55 100644 (file)
@@ -9232,10 +9232,10 @@ genFarPointerGet (operand * left,
 }
 
 /*-----------------------------------------------------------------*/
-/* emitcodePointerGet - gget value from code space                  */
+/* genCodePointerGet - get value from code space                  */
 /*-----------------------------------------------------------------*/
 static void
-emitcodePointerGet (operand * left,
+genCodePointerGet (operand * left,
                    operand * result, iCode * ic, iCode *pi)
 {
   int size, offset, dopi=1;
@@ -9506,7 +9506,7 @@ genPointerGet (iCode * ic, iCode *pi)
       break;
 
     case CPOINTER:
-      emitcodePointerGet (left, result, ic, pi);
+      genCodePointerGet (left, result, ic, pi);
       break;
 
     case GPOINTER:
@@ -10178,6 +10178,10 @@ genPointerSet (iCode * ic, iCode *pi)
     case GPOINTER:
       genGenPointerSet (right, result, ic, pi);
       break;
+
+    default:
+      werror (E_INTERNAL_ERROR, __FILE__, __LINE__, 
+             "genPointerSet: illegal pointer type");
     }
 
 }
index c138f1232b2d261f07eae4b60aa5f417d3fad9a9..31f6185f715385fee9e370062f7acdba187b9658 100644 (file)
@@ -8189,6 +8189,10 @@ genPointerSet (iCode * ic, iCode *pi)
     case GPOINTER:
       genGenPointerSet (right, result, ic, pi);
       break;
+
+    default:
+      werror (E_INTERNAL_ERROR, __FILE__, __LINE__, 
+             "genPointerSet: illegal pointer type");
     }
 
 }
index d75b4a8d4570dacdc6907857abcdd8e587424b0b..20fc81a2b790381d3062027774b56b58278794cc 100644 (file)
@@ -7600,9 +7600,9 @@ static void genFarPointerGet (operand *left,
 }
 
 /*-----------------------------------------------------------------*/
-/* pic14_emitcodePointerGet - gget value from code space                  */
+/* genCodePointerGet - get value from code space                  */
 /*-----------------------------------------------------------------*/
-static void pic14_emitcodePointerGet (operand *left,
+static void genCodePointerGet (operand *left,
                                 operand *result, iCode *ic)
 {
     int size, offset ;
@@ -7762,7 +7762,7 @@ static void genPointerGet (iCode *ic)
        break;
 
     case CPOINTER:
-       pic14_emitcodePointerGet (left,result,ic);
+       genCodePointerGet (left,result,ic);
        break;
 
     case GPOINTER:
@@ -8387,8 +8387,11 @@ static void genPointerSet (iCode *ic)
     case GPOINTER:
        genGenPointerSet (right,result,ic);
        break;
-    }
 
+    default:
+      werror (E_INTERNAL_ERROR, __FILE__, __LINE__, 
+             "genPointerSet: illegal pointer type");
+    }
 }
 
 /*-----------------------------------------------------------------*/