aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/parse.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2013-10-29 22:48:02 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2013-10-29 22:48:02 +0100
commit9efc08268fb8dc26669d5ea788c9f547dfc15d85 (patch)
tree885841ccc07182a6213729cc65527c492aa68529 /gcc/fortran/parse.c
parentc8c0f5577d17a5d3a21d56c2745baa99cecac609 (diff)
downloadgcc-9efc08268fb8dc26669d5ea788c9f547dfc15d85.zip
gcc-9efc08268fb8dc26669d5ea788c9f547dfc15d85.tar.gz
gcc-9efc08268fb8dc26669d5ea788c9f547dfc15d85.tar.bz2
re PR fortran/44350 (accepts illegal fortran in BLOCK DATA)
2013-10-29 Tobias Burnus <burnus@net-b.de> PR fortran/44350 * parse.c (parse_spec): Add C1116 constraint check for BLOCK DATA. 2013-10-29 Tobias Burnus <burnus@net-b.de> PR fortran/44350 * gfortran.dg/blockdata_8.f90: New. From-SVN: r204185
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r--gcc/fortran/parse.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 512babf..e8b9885 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -2628,6 +2628,33 @@ loop:
default:
break;
}
+ else if (gfc_current_state () == COMP_BLOCK_DATA)
+ /* Fortran 2008, C1116. */
+ switch (st)
+ {
+ case ST_DATA_DECL:
+ case ST_COMMON:
+ case ST_DATA:
+ case ST_TYPE:
+ case ST_END_BLOCK_DATA:
+ case ST_ATTR_DECL:
+ case ST_EQUIVALENCE:
+ case ST_PARAMETER:
+ case ST_IMPLICIT:
+ case ST_IMPLICIT_NONE:
+ case ST_DERIVED_DECL:
+ case ST_USE:
+ break;
+
+ case ST_NONE:
+ break;
+
+ default:
+ gfc_error ("%s statement is not allowed inside of BLOCK DATA at %C",
+ gfc_ascii_statement (st));
+ reject_statement ();
+ break;
+ }
/* If we find a statement that can not be followed by an IMPLICIT statement
(and thus we can expect to see none any further), type the function result