]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/58182 (ICE with global binding name used as a FUNCTION)
authorJanus Weil <janus@gcc.gnu.org>
Wed, 8 Jan 2014 15:25:22 +0000 (16:25 +0100)
committerJanus Weil <janus@gcc.gnu.org>
Wed, 8 Jan 2014 15:25:22 +0000 (16:25 +0100)
2014-01-08  Janus Weil  <janus@gcc.gnu.org>

PR fortran/58182
* resolve.c (gfc_verify_binding_labels): Modify order of checks.

2014-01-08  Janus Weil  <janus@gcc.gnu.org>

PR fortran/58182
* gfortran.dg/binding_label_tests_26a.f90: New.
* gfortran.dg/binding_label_tests_26b.f90: New.

From-SVN: r206429

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90 [new file with mode: 0644]

index f35ce55185c31ed8dd5ebed5965fdf206e0c411e..34b5cd80be517c5ec2028aec81db434d9508c872 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-08  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/58182
+       * resolve.c (gfc_verify_binding_labels): Modify order of checks.
+
 2014-01-06  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/59589
index e78788b8de4cccfc1ac9b3340277f29d63db3c64..ad088bb73b2e01ef339096ec0d7f03e76579bc68 100644 (file)
@@ -10200,11 +10200,11 @@ gfc_verify_binding_labels (gfc_symbol *sym)
           && ((gsym->type != GSYM_SUBROUTINE && gsym->type != GSYM_FUNCTION)
               || (gsym->defined && sym->attr.if_source != IFSRC_IFBODY))
           && sym != gsym->ns->proc_name
-          && (strcmp (gsym->sym_name, sym->name) != 0
-              || module != gsym->mod_name
+          && (module != gsym->mod_name
+              || strcmp (gsym->sym_name, sym->name) != 0
               || (module && strcmp (module, gsym->mod_name) != 0)))
     {
-      /* Print an error if the procdure is defined multiple times; we have to
+      /* Print an error if the procedure is defined multiple times; we have to
         exclude references to the same procedure via module association or
         multiple checks for the same procedure.  */
       gfc_error ("Procedure %s with binding label %s at %L uses the same "
index f9111f94dba59050216e9f7598d67365e412f5f9..bb71c72c2eb38ada2c6e68db6e7b56c577ed7f64 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-08  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/58182
+       * gfortran.dg/binding_label_tests_26a.f90: New.
+       * gfortran.dg/binding_label_tests_26b.f90: New.
+
 2014-01-08  Marek Polacek  <polacek@redhat.com>
 
        PR sanitizer/59667
diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90 b/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90
new file mode 100644 (file)
index 0000000..32cf07a
--- /dev/null
@@ -0,0 +1,20 @@
+! { dg-do compile }
+!
+! PR 58182: [4.9 Regression] ICE with global binding name used as a FUNCTION
+!
+! Contributed by Andrew Bensons <abensonca@gmail.com>
+!
+! This file must be compiled BEFORE binding_label_tests_26b.f90, which it 
+! should be because dejagnu will sort the files.  
+
+module fg
+contains
+  function fffi(f)
+    interface
+       function f() bind(c)
+       end function
+    end interface
+  end function
+end module
+
+! { dg-final { keep-modules "" } }
diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90 b/gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90
new file mode 100644 (file)
index 0000000..ad8426b
--- /dev/null
@@ -0,0 +1,14 @@
+! { dg-do compile }
+!
+! PR 58182: [4.9 Regression] ICE with global binding name used as a FUNCTION
+!
+! Contributed by Andrew Bensons <abensonca@gmail.com>
+!
+! This file must be compiled AFTER binding_label_tests_26a.f90, which it 
+! should be because dejagnu will sort the files.  
+
+module f    ! { dg-error "uses the same global identifier" }
+  use fg    ! { dg-error "uses the same global identifier" }
+end module
+
+! { dg-final { cleanup-modules "fg f" } }