* support/regression/fwk/lib/testfwk.c (__printf): Removed GENERIC.
[fw/sdcc] / src / SDCCast.c
index 1fcc17975a1df5678152ca1b6d71a8d09b47f030..25640f80b516a75ac0f34a730d41a3c8fbd5fdef 100644 (file)
@@ -46,7 +46,6 @@ int labelKey = 1;
 #define ALLOCATE 1
 #define DEALLOCATE 2
 
-char buffer[1024];
 int noLineno = 0;
 int noAlloc = 0;
 symbol *currFunc;
@@ -610,7 +609,6 @@ processParms (ast * func,
              int *parmNumber,
              bool rightmost)
 {
-  int castError=0;
   sym_link *fetype = func->etype;
 
   /* if none of them exist */
@@ -746,36 +744,8 @@ processParms (ast * func,
 
 
   /* the parameter type must be at least castable */
-  if (compareType (defParm->type, actParm->ftype) == 0)
-    {
-      castError++;
-    }
-
-#ifdef JWK20010916
-  if (!IS_SPEC(defParm->type) && !IS_SPEC(actParm->ftype)) {
-    // now we have two pointers, check if they point to the same
-    sym_link *dtype=defParm->type, *atype=actParm->ftype;
-    do {
-      dtype=dtype->next;
-      atype=atype->next;
-      if (
-         (dtype->next && !atype->next) ||
-         (!dtype->next && atype->next) ||
-         compareType (dtype, atype)!=1) {
-       castError++;
-      }
-    } while (dtype->next && atype->next);
-    if (IS_SPEC(dtype) && IS_SPEC(atype)) {
-      // ok so far, we have two etypes, they must have the same SCLASS
-      if (SPEC_SCLS(dtype)!=SPEC_SCLS(atype)) {
-       castError++;
-      }
-    }
-  }
-#endif
-
-  if (castError) {
-    werror (W_INCOMPAT_CAST);
+  if (compareType (defParm->type, actParm->ftype) == 0) {
+    werror (E_INCOMPAT_TYPES);
     fprintf (stderr, "type --> '");
     printTypeChain (actParm->ftype, stderr);
     fprintf (stderr, "' ");
@@ -1136,7 +1106,7 @@ gatherAutoInit (symbol * autoChain)
          /* insert the symbol into the symbol table */
          /* with level = 0 & name = rname       */
          newSym = copySymbol (sym);
-         addSym (SymbolTab, newSym, newSym->name, 0, 0, 1);
+         addSym (SymbolTab, newSym, newSym->rname, 0, 0, 1);
 
          /* now lift the code to main */
          if (IS_AGGREGATE (sym->type))
@@ -1250,6 +1220,7 @@ processBlockVars (ast * tree, int *stack, int action)
 
 /*-----------------------------------------------------------------*/
 /* constExprValue - returns the value of a constant expression     */
+/*                  or NULL if it is not a constant expression     */
 /*-----------------------------------------------------------------*/
 value *
 constExprValue (ast * cexpr, int check)
@@ -2111,7 +2082,7 @@ decorateType (ast * tree)
       {
        sym_link *ltc = (tree->right ? RTYPE (tree) : LTYPE (tree));
        COPYTYPE (TTYPE (tree), TETYPE (tree), ltc);
-       if (!tree->initMode && IS_CONSTANT (TETYPE (tree)))
+       if (!tree->initMode && IS_CONSTANT(TETYPE(tree)))
          werror (E_CODE_WRITE, "++/--");
 
        if (tree->right)
@@ -2761,7 +2732,7 @@ decorateType (ast * tree)
       /* make sure the type is complete and sane */
       checkTypeSanity(LETYPE(tree), "(cast)");
 
-#if 1
+#if 0
       /* if the right is a literal replace the tree */
       if (IS_LITERAL (RETYPE (tree))) {
              if (!IS_PTR (LTYPE (tree))) {
@@ -3135,22 +3106,13 @@ decorateType (ast * tree)
          fprintf (stderr, "'\n");
        }
 
-      /* extra checks for pointer types */
-      if (IS_PTR (LTYPE (tree)) && IS_PTR (RTYPE (tree)) &&
-         !IS_GENPTR (LTYPE (tree)))
-       {
-         if (DCL_TYPE (LTYPE (tree)) != DCL_TYPE (RTYPE (tree)))
-           werror (W_PTR_ASSIGN);
-       }
-
       TETYPE (tree) = getSpec (TTYPE (tree) =
                               LTYPE (tree));
       RRVAL (tree) = 1;
       LLVAL (tree) = 1;
       if (!tree->initMode ) {
-             if (IS_CONSTANT (LETYPE (tree))) {
-                     werror (E_CODE_WRITE, " ");
-             } 
+       if ((IS_SPEC(LETYPE(tree)) && IS_CONSTANT (LETYPE (tree))))
+         werror (E_CODE_WRITE, " ");
       }
       if (LRVAL (tree))
        {