aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2016-06-26 01:03:19 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2016-06-26 01:03:19 +0000
commite7d451fbf29b0f87a240f19b44b37d7bd2139ebb (patch)
treea921e77f6a2fbc4ce1d8c2d6e2a386a83538da4f
parent24fd519f0cb56af5009df2e3d03a96775ad8dfdd (diff)
2016-06-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/71649 * module.c (create_intrinsic_function): Check for NULL values and return after giving error. PR fortran/71649 * gfortran.dg/pr71649.f90: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@237789 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/module.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr71649.f9013
4 files changed, 29 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9b4b957b109..b8cadceb591 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/71649
+ * module.c (create_intrinsic_function): Check for NULL values and
+ return after giving error.
+
2016-06-21 Michael Meissner <meissner@linux.vnet.ibm.com>
* trans-types.c (gfc_build_complex_type): Move setting complex
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 6d3860ef826..4d664f079f5 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -6159,9 +6159,11 @@ create_intrinsic_function (const char *name, int id,
tmp_symtree = gfc_find_symtree (gfc_current_ns->sym_root, name);
if (tmp_symtree)
{
- if (strcmp (modname, tmp_symtree->n.sym->module) == 0)
- return;
- gfc_error ("Symbol %qs already declared", name);
+ if (tmp_symtree->n.sym && tmp_symtree->n.sym->module
+ && strcmp (modname, tmp_symtree->n.sym->module) == 0)
+ return;
+ gfc_error ("Symbol %qs at %C already declared", name);
+ return;
}
gfc_get_sym_tree (name, gfc_current_ns, &tmp_symtree, false);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 68172b39e8b..13c9ce2e5c2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-06-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/71649
+ * gfortran.dg/pr71649.f90: New test.
+
2016-06-25 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/71643
diff --git a/gcc/testsuite/gfortran.dg/pr71649.f90 b/gcc/testsuite/gfortran.dg/pr71649.f90
new file mode 100644
index 00000000000..f20b7687e6f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr71649.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+! PR71649 Internal Compiler Error
+SUBROUTINE Compiler_Options ( Options, Version, WriteOpt )
+ USE ISO_FORTRAN_ENV, ONLY : Compiler_Version, Compiler_Options ! { dg-error "already declared" }
+ IMPLICIT NONE
+ CHARACTER (LEN=*), INTENT(OUT) :: Options
+ CHARACTER (LEN=*), INTENT(OUT) :: Version
+ LOGICAL, INTENT(IN), OPTIONAL :: WriteOpt
+ Version = Compiler_Version()
+ Options = Compiler_Options() ! { dg-error "Unexpected use of subroutine name" }
+ RETURN
+END SUBROUTINE Compiler_Options
+