(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 == '+' ||
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
fprintf (of, "unkown * ");
break;
case ARRAY:
- fprintf (of, "[] ");
+ if (DCL_ELEM(type)) {
+ fprintf (of, "[%d] ", DCL_ELEM(type));
+ } else {
+ fprintf (of, "[] ");
+ }
break;
}
}