* src/SDCCglue.c: reverted back to 1.124
[fw/sdcc] / src / SDCCast.c
index f8d5e58caef7be71c5718b8977d2943f4097f1df..c92f179b3b1aeb2086d18e374432f25a505db952 100644 (file)
@@ -1899,6 +1899,7 @@ decorateType (ast * tree)
 /*----------------------------*/
   /*   leaf has been reached    */
 /*----------------------------*/
+  lineno=tree->lineno;
   /* if this is of type value */
   /* just get the type        */
   if (tree->type == EX_VALUE)
@@ -1977,7 +1978,8 @@ decorateType (ast * tree)
        (getSize(LTYPE(tree)) > getSize(RTYPE(tree))) &&
        (getSize(RTYPE(tree)) < INTSIZE)) {
       // this is a cast/assign to a bigger type
-      if (IS_AST_OP(tree->right) && 
+      if (IS_AST_OP(tree->right) &&
+         IS_INTEGRAL(tree->right->ftype) &&
          (tree->right->opval.op == LEFT_OP ||
           tree->right->opval.op == '*' ||
           tree->right->opval.op == '+' ||
@@ -2501,7 +2503,7 @@ decorateType (ast * tree)
 
       LRVAL (tree) = RRVAL (tree) = 1;
       /* if the left is a pointer */
-      if (IS_PTR (LTYPE (tree)) || IS_ARRAY (LTYPE (tree)))
+      if (IS_PTR (LTYPE (tree)) || IS_AGGREGATE (LTYPE (tree)) )
        TETYPE (tree) = getSpec (TTYPE (tree) =
                                 LTYPE (tree));
       else