From: Thomas Koenig Date: Thu, 22 Dec 2016 20:27:52 +0000 (+0000) Subject: backport: re PR fortran/78239 (ICE in char_len_param_value, at fortran/decl.c:926... X-Git-Tag: releases/gcc-5.5.0~629 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18522701d605227c3ce4993ced9d3fb022f07ddb;p=thirdparty%2Fgcc.git backport: re PR fortran/78239 (ICE in char_len_param_value, at fortran/decl.c:926, with -fimplicit-none) 2016-12-22 Thomas Koenig Backport from trunk PR fortran/78239 * decl.c (char_len_param_value): Also check for -fimplicit-none when determining if implicit none is in force. 2016-12-22 Thomas Koenig Backport from trunk PR fortran/78239 * gfortran.dg/fimplicit_none_1.f90: New test. * gfortran.dg/fimplicit_none_2.f90: New test From-SVN: r243895 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7d7e9f2998a1..d4ea0e901cc7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2016-12-22 Thomas Koenig + + Backport from trunk + PR fortran/78239 + * decl.c (char_len_param_value): Also check for -fimplicit-none + when determining if implicit none is in force. + 2016-12-04 Janus Weil Backport from trunk diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 741e77fdbf26..81f9097e262a 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -776,7 +776,8 @@ char_len_param_value (gfc_expr **expr, bool *deferred) if (!t && e->ts.type == BT_UNKNOWN && e->symtree->n.sym->attr.untyped == 1 - && (e->symtree->n.sym->ns->seen_implicit_none == 1 + && (flag_implicit_none + || e->symtree->n.sym->ns->seen_implicit_none == 1 || e->symtree->n.sym->ns->parent->seen_implicit_none == 1)) { gfc_free_expr (e); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 78ed52518fa8..beac2293cf1c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2016-12-22 Thomas Koenig + + Backport from trunk + PR fortran/78239 + * gfortran.dg/fimplicit_none_1.f90: New test. + * gfortran.dg/fimplicit_none_2.f90: New test. + 2016-12-14 Richard Biener PR tree-optimization/78731 diff --git a/gcc/testsuite/gfortran.dg/fimplicit_none_1.f90 b/gcc/testsuite/gfortran.dg/fimplicit_none_1.f90 new file mode 100644 index 000000000000..997584e0b3d8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/fimplicit_none_1.f90 @@ -0,0 +1,6 @@ +! { dg-do compile } +! { dg-options "-fimplicit-none" } +subroutine s(n) ! { dg-error "has no IMPLICIT type" } + character(n) :: c ! { dg-error "Scalar INTEGER expression expected" } + c = 'c' ! { dg-error "has no IMPLICIT type" } +end diff --git a/gcc/testsuite/gfortran.dg/fimplicit_none_2.f90 b/gcc/testsuite/gfortran.dg/fimplicit_none_2.f90 new file mode 100644 index 000000000000..fa8a8f4d0556 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/fimplicit_none_2.f90 @@ -0,0 +1,6 @@ +! { dg-do compile } +! { dg-options "-fimplicit-none" } +! PR fortran/78239 - used to ICE +program p + character(*), parameter :: z(2) = [character(n) :: 'x', 'y'] ! { dg-error "Scalar INTEGER expression expected" } +end