re PR fortran/55197 (Use statement for omp_lib causes ICE)
authorTobias Burnus <burnus@net-b.de>
Sun, 16 Dec 2012 14:36:54 +0000 (15:36 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Sun, 16 Dec 2012 14:36:54 +0000 (15:36 +0100)
2012-12-16  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55197
        * module.c (gfc_use_module): Free rename list only for
        internally generated intrinsic modules.

2012-12-16  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55197
        * gfortran.dg/gomp/use_intrinsic_1.f90: New.

From-SVN: r194537

gcc/fortran/ChangeLog
gcc/fortran/module.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/gomp/use_intrinsic_1.f90 [new file with mode: 0644]

index 1deb94d39378cb01501b375aa6e7731d7b6c0ae7..7202632cb7044b75087d2c961622217ca1b667bb 100644 (file)
@@ -1,3 +1,9 @@
+2012-12-16  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/55197
+       * module.c (gfc_use_module): Free rename list only for
+       internally generated intrinsic modules.
+
 2012-12-16  Tobias Burnus  <burnus@net-b.de>
 
        * trans-intrinsic.c (conv_intrinsic_move_alloc): Set dynamic
index 16ea97b72cd25edc4656247d9cc5a8a21672f3bb..cde57390c37b47cadca960f49925213c8260bc03 100644 (file)
@@ -6157,6 +6157,8 @@ gfc_use_module (gfc_use_list *module)
                             "intrinsic module at %C") != FAILURE)
        {
         use_iso_fortran_env_module ();
+        free_rename (module->rename);
+        module->rename = NULL;
         gfc_current_locus = old_locus;
         module->intrinsic = true;
         return;
@@ -6167,6 +6169,8 @@ gfc_use_module (gfc_use_list *module)
                             "ISO_C_BINDING module at %C") != FAILURE)
        {
          import_iso_c_binding_module();
+         free_rename (module->rename);
+         module->rename = NULL;
          gfc_current_locus = old_locus;
          module->intrinsic = true;
          return;
@@ -6359,8 +6363,6 @@ gfc_use_modules (void)
       next = module_list->next;
       rename_list_remove_duplicate (module_list->rename);
       gfc_use_module (module_list);
-      if (module_list->intrinsic)
-       free_rename (module_list->rename);
       free (module_list);
     }
   gfc_rename_list = NULL;
index f6503b094daca2c48e7c23aab044b7ab0b04d249..5276ca7d25e430694994d6f1931a7b67fc00f563 100644 (file)
@@ -1,3 +1,8 @@
+2012-12-16  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/55197
+       * gfortran.dg/gomp/use_intrinsic_1.f90: New.
+
 2012-12-16  Tobias Burnus  <burnus@net-b.de>
 
        * gfortran.dg/move_alloc_14.f90: New.
diff --git a/gcc/testsuite/gfortran.dg/gomp/use_intrinsic_1.f90 b/gcc/testsuite/gfortran.dg/gomp/use_intrinsic_1.f90
new file mode 100644 (file)
index 0000000..5996350
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+!
+! PR fortran/55197
+!
+! Contributed by Erik Toussaint
+!
+
+use, intrinsic :: omp_lib, only: omp_get_num_threads
+use, intrinsic :: omp_lib_kinds , foo => omp_lock_kind
+print *, foo
+end