aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-12-16 15:36:54 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-12-16 15:36:54 +0100
commitdf0b360e3e82962e7b5e805c130a38593b646a80 (patch)
tree567b287d9b44e73b0b57dda1f6e71b362c29a562
parentf6c28ef193ad29a9eccb01db78efd5aca26ae787 (diff)
downloadgcc-df0b360e3e82962e7b5e805c130a38593b646a80.zip
gcc-df0b360e3e82962e7b5e805c130a38593b646a80.tar.gz
gcc-df0b360e3e82962e7b5e805c130a38593b646a80.tar.bz2
re PR fortran/55197 (Use statement for omp_lib causes ICE)
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
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/module.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/use_intrinsic_1.f9011
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 1deb94d..7202632 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
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
type of the FROM variable to the declared type.
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 16ea97b..cde5739 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -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;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f6503b0..5276ca7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
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.
2012-12-16 Tobias Burnus <burnus@net-b.de>
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
index 0000000..5996350
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/use_intrinsic_1.f90
@@ -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