aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-11-23 21:44:05 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-11-23 21:44:05 +0000
commit91c9fb42c0c9121b745779bb86e7ac6dae4363b7 (patch)
tree6684ceaad7db16f2228d91e4df625a593c89cf41
parent15a3cdd8b070651c9b5b3433bfaa0d7418a40460 (diff)
downloadgcc-91c9fb42c0c9121b745779bb86e7ac6dae4363b7.zip
gcc-91c9fb42c0c9121b745779bb86e7ac6dae4363b7.tar.gz
gcc-91c9fb42c0c9121b745779bb86e7ac6dae4363b7.tar.bz2
re PR fortran/78297 (ICE in finish_equivalences, at fortran/trans-common.c:1246)
2016-11-23 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/78297 * trans-common.c (finish_equivalences): Do not dereference a NULL pointer. 2016-11-23 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/78297 * gfortran.dg/pr78297.f90: New test. From-SVN: r242802
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/trans-common.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr78297.f9011
4 files changed, 27 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index adeb08d..e468a49 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2016-11-23 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/78297
+ * trans-common.c (finish_equivalences): Do not dereference a NULL pointer.
+
2016-11-23 Martin Jambor <mjambor@suse.cz>
* f95-lang.c (DEF_HSA_BUILTIN): New macro.
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index 3207105..7706809 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -1246,8 +1246,12 @@ finish_equivalences (gfc_namespace *ns)
{
c = gfc_get_common_head ();
/* We've lost the real location, so use the location of the
- enclosing procedure. */
- c->where = ns->proc_name->declared_at;
+ enclosing procedure. If we're in a BLOCK DATA block, then
+ use the location in the sym_root. */
+ if (ns->proc_name)
+ c->where = ns->proc_name->declared_at;
+ else if (ns->is_block_data)
+ c->where = ns->sym_root->n.sym->declared_at;
strcpy (c->name, z->module);
}
else
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6954431..77ada38 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-11-23 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/78297
+ * gfortran.dg/pr78297.f90: New test.
+
2016-11-23 David Edelsohn <dje.gcc@gmail.com>
* gcc.target/powerpc/builtins-3.c: Add -maltivec and -mvsx options.
diff --git a/gcc/testsuite/gfortran.dg/pr78297.f90 b/gcc/testsuite/gfortran.dg/pr78297.f90
new file mode 100644
index 0000000..9c3d1aa
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr78297.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+module m
+ real :: a(2), b(2)
+ real :: c(2), d(2)
+ equivalence (a, b)
+ equivalence (c, d)
+ common /xcom/ a
+end
+block data
+ use m
+end block data