aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-common.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-07-16 15:01:59 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-07-16 15:01:59 +0000
commitb8ea6dbcbd1fb57226003df785bb0be84a0614f7 (patch)
tree388dd87c2767bf52d5aa28790427ec7a5bbd6e9c /gcc/fortran/trans-common.c
parent3e27aa84ef34539400456774ade5f2caaa20b5e9 (diff)
downloadgcc-b8ea6dbcbd1fb57226003df785bb0be84a0614f7.zip
gcc-b8ea6dbcbd1fb57226003df785bb0be84a0614f7.tar.gz
gcc-b8ea6dbcbd1fb57226003df785bb0be84a0614f7.tar.bz2
re PR fortran/28384 (ICE on non-existent COMMON block)
2006-07-16 Paul Thomas <pault@gcc.gnu.org> PR fortran/28384 * trans-common.c (translate_common): If common_segment is NULL emit error that common block does not exist. PR fortran/20844 * io.c (check_io_constraints): It is an error if an ADVANCE specifier appears without an explicit format. PR fortran/28201 * resolve.c (resolve_generic_s): For a use_associated function, do not search for an alternative symbol in the parent name space. PR fortran/20893 * resolve.c (resolve_elemental_actual): New function t combine all the checks of elemental procedure actual arguments. In addition, check of array valued optional args(this PR) has been added. (resolve_function, resolve_call): Remove parts that treated elemental procedure actual arguments and call the above. 2006-07-16 Paul Thomas <pault@gcc.gnu.org> PR fortran/20844 * gfortran.dg/io_constaints_2.f90: Add the test for ADVANCE specifiers requiring an explicit format tag.. PR fortran/28201 * gfortran.dg/generic_5: New test. PR fortran/20893 * gfortran.dg/elemental_optional_args_1.f90: New test. From-SVN: r115499
Diffstat (limited to 'gcc/fortran/trans-common.c')
-rw-r--r--gcc/fortran/trans-common.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index f3b0f12..5350eac 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -962,6 +962,13 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list)
current_offset += s->length;
}
+ if (common_segment == NULL)
+ {
+ gfc_error ("COMMON '%s' at %L does not exist",
+ common->name, &common->where);
+ return;
+ }
+
if (common_segment->offset != 0)
{
gfc_warning ("COMMON '%s' at %L requires %d bytes of padding at start",