aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/intrinsic.c
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2016-12-04 21:31:26 +0100
committerJanus Weil <janus@gcc.gnu.org>2016-12-04 21:31:26 +0100
commitaa7cfe40579670e5bc0df3220181aad0bee763ab (patch)
tree31043207b5865f80e620542d9f0a6a89e68e505c /gcc/fortran/intrinsic.c
parent5dcf45618031c9d0e44ba306102a6562eed879d3 (diff)
downloadgcc-aa7cfe40579670e5bc0df3220181aad0bee763ab.zip
gcc-aa7cfe40579670e5bc0df3220181aad0bee763ab.tar.gz
gcc-aa7cfe40579670e5bc0df3220181aad0bee763ab.tar.bz2
re PR fortran/78618 (ICE in gfc_check_rank, at fortran/check.c:3670)
2016-12-04 Janus Weil <janus@gcc.gnu.org> PR fortran/78618 * intrinsic.c (gfc_convert_type_warn): Do not set the full typespec for the conversion symbol, but only type and kind. Set the full typespec for the expression. (gfc_convert_chartype): Ditto. From-SVN: r243232
Diffstat (limited to 'gcc/fortran/intrinsic.c')
-rw-r--r--gcc/fortran/intrinsic.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index fdc11d8..fb83402 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -4984,12 +4984,14 @@ gfc_convert_type_warn (gfc_expr *expr, gfc_typespec *ts, int eflag, int wflag)
new_expr->value.function.name = sym->lib_name;
new_expr->value.function.isym = sym;
new_expr->where = old_where;
+ new_expr->ts = *ts;
new_expr->rank = rank;
new_expr->shape = gfc_copy_shape (shape, rank);
gfc_get_ha_sym_tree (sym->name, &new_expr->symtree);
new_expr->symtree->n.sym->result = new_expr->symtree->n.sym;
- new_expr->symtree->n.sym->ts = *ts;
+ new_expr->symtree->n.sym->ts.type = ts->type;
+ new_expr->symtree->n.sym->ts.kind = ts->kind;
new_expr->symtree->n.sym->attr.flavor = FL_PROCEDURE;
new_expr->symtree->n.sym->attr.function = 1;
new_expr->symtree->n.sym->attr.elemental = 1;
@@ -5055,11 +5057,13 @@ gfc_convert_chartype (gfc_expr *expr, gfc_typespec *ts)
new_expr->value.function.name = sym->lib_name;
new_expr->value.function.isym = sym;
new_expr->where = old_where;
+ new_expr->ts = *ts;
new_expr->rank = rank;
new_expr->shape = gfc_copy_shape (shape, rank);
gfc_get_ha_sym_tree (sym->name, &new_expr->symtree);
- new_expr->symtree->n.sym->ts = *ts;
+ new_expr->symtree->n.sym->ts.type = ts->type;
+ new_expr->symtree->n.sym->ts.kind = ts->kind;
new_expr->symtree->n.sym->attr.flavor = FL_PROCEDURE;
new_expr->symtree->n.sym->attr.function = 1;
new_expr->symtree->n.sym->attr.elemental = 1;