PR fortran/33317
* trans-expr.c (gfc_conv_missing_dummy): Revert.
* iresolve.c (gfc_resolve_cshift): Revert.
(gfc_resolve_eoshift): Likewise.
* check.c (gfc_check_cshift): Revert.
(gfc_check_eoshift): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130304
138bc75d-0d04-0410-961f-
82ee72b054a4
+2007-11-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/33317
+ * trans-expr.c (gfc_conv_missing_dummy): Revert.
+ * iresolve.c (gfc_resolve_cshift): Revert.
+ (gfc_resolve_eoshift): Likewise.
+ * check.c (gfc_check_cshift): Revert.
+ (gfc_check_eoshift): Likewise.
+
2007-11-19 Tobias Burnus <burnus@net-b.de>
PR fortran/34079
/* TODO: more requirements on shift parameter. */
}
- if (dim_check (dim, 2, true) == FAILURE)
+ /* FIXME (PR33317): Allow optional DIM=. */
+ if (dim_check (dim, 2, false) == FAILURE)
return FAILURE;
return SUCCESS;
/* TODO: more restrictions on boundary. */
}
- if (dim_check (dim, 4, true) == FAILURE)
+ /* FIXME (PR33317): Allow optional DIM=. */
+ if (dim_check (dim, 4, false) == FAILURE)
return FAILURE;
return SUCCESS;
gfc_convert_type_warn (shift, &ts, 2, 0);
}
- /* Mark this for later setting the type in gfc_conv_missing_dummy. */
- if (dim != NULL && dim->symtree != NULL)
- dim->symtree->n.sym->attr.untyped = 1;
+ if (dim != NULL)
+ {
+ gfc_resolve_dim_arg (dim);
+ /* Convert dim to shift's kind, so we don't need so many variations. */
+ if (dim->ts.kind != shift->ts.kind)
+ gfc_convert_type_warn (dim, &shift->ts, 2, 0);
+ }
f->value.function.name
= gfc_get_string (PREFIX ("cshift%d_%d%s"), n, shift->ts.kind,
gfc_convert_type_warn (shift, &ts, 2, 0);
}
- /* Mark this for later setting the type in gfc_conv_missing_dummy. */
- if (dim != NULL && dim->symtree != NULL)
- dim->symtree->n.sym->attr.untyped = 1;
+ if (dim != NULL)
+ {
+ gfc_resolve_dim_arg (dim);
+ /* Convert dim to shift's kind, so we don't need so many variations. */
+ if (dim->ts.kind != shift->ts.kind)
+ gfc_convert_type_warn (dim, &shift->ts, 2, 0);
+ }
f->value.function.name
= gfc_get_string (PREFIX ("eoshift%d_%d%s"), n, shift->ts.kind,
present = gfc_conv_expr_present (arg->symtree->n.sym);
- /* Make sure the type is at least default integer kind to match certain
- runtime library functions. (ie cshift and eoshift). */
- if (ts.type == BT_INTEGER && arg->symtree->n.sym->attr.untyped)
- {
- tmp = gfc_get_int_type (gfc_default_integer_kind);
- tmp = fold_convert (tmp, se->expr);
- }
- else
- tmp = build3 (COND_EXPR, TREE_TYPE (se->expr), present, se->expr,
- fold_convert (TREE_TYPE (se->expr), integer_zero_node));
+ tmp = build3 (COND_EXPR, TREE_TYPE (se->expr), present, se->expr,
+ fold_convert (TREE_TYPE (se->expr), integer_zero_node));
tmp = gfc_evaluate_now (tmp, &se->pre);
se->expr = tmp;