aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/parse.c
diff options
context:
space:
mode:
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>2004-08-30 21:08:41 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2004-08-30 21:08:41 +0200
commit0de4325e0bc2e0601e49ac8e85ca9a7134e50198 (patch)
treef2545b671e60fba92c46ecb37aaa32965b1784a7 /gcc/fortran/parse.c
parent442c8e31f0c70473592cbb205ca2d3ebc5cb69ae (diff)
downloadgcc-0de4325e0bc2e0601e49ac8e85ca9a7134e50198.zip
gcc-0de4325e0bc2e0601e49ac8e85ca9a7134e50198.tar.gz
gcc-0de4325e0bc2e0601e49ac8e85ca9a7134e50198.tar.bz2
gfortran.h (gfc_namespace): Add new field is_block_data.
fortran/ * gfortran.h (gfc_namespace): Add new field is_block_data. * parse.c (accept_statement): Remove special handling for BLOCK DATA. (parse_block_data): Record BLOCK DATA name, set is_block_data field. * trans.c (gfc_generate_code): Handle BLOCK DATA units. * trans.h (gfc_generate_block_data): Add prototype. * trans-decl.c (gfc_generate_block_data): New function. testsuite/ * gfortran.dg/blockdata_1.f90: New test. From-SVN: r86796
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r--gcc/fortran/parse.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index abc3c29..b940fd3 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -1058,24 +1058,6 @@ accept_statement (gfc_statement st)
break;
- case ST_BLOCK_DATA:
- {
- gfc_symbol *block_data = NULL;
- symbol_attribute attr;
-
- gfc_get_symbol ("_BLOCK_DATA__", gfc_current_ns, &block_data);
- gfc_clear_attr (&attr);
- attr.flavor = FL_PROCEDURE;
- attr.proc = PROC_UNKNOWN;
- attr.subroutine = 1;
- attr.access = ACCESS_PUBLIC;
- block_data->attr = attr;
- gfc_current_ns->proc_name = block_data;
- gfc_commit_symbols ();
- }
-
- break;
-
case ST_ENTRY:
case_executable:
case_exec_markers:
@@ -2410,6 +2392,9 @@ parse_block_data (void)
static int blank_block=0;
gfc_gsymbol *s;
+ gfc_current_ns->proc_name = gfc_new_block;
+ gfc_current_ns->is_block_data = 1;
+
if (gfc_new_block == NULL)
{
if (blank_block)