From 090b4ea8eab716cb92c98dde56dc92754f29a64c Mon Sep 17 00:00:00 2001 From: Daniel Franke Date: Sun, 8 Jul 2007 18:58:45 -0400 Subject: [PATCH] re PR fortran/29876 (ICE on bad operator in ONLY clause of USE statement) gcc/fortran: 2007-07-08 Daniel Franke PR fortran/29876 * module.c (gfc_match_use): Do not set an non-existant intrinsic operator if a user-defined operator is found. gcc/testsuite: 2007-07-08 Daniel Franke PR fortran/29876 * gfortran.dg/operator_6.f90: New test. From-SVN: r126472 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/module.c | 4 ---- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/operator_6.f90 | 12 ++++++++++++ 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/operator_6.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5afe8f85859..63b0b7c69f3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2007-07-08 Daniel Franke + + PR fortran/29876 + * module.c (gfc_match_use): Do not set an non-existant + intrinsic operator if a user-defined operator is found. + 2007-07-08 Daniel Franke PR fortran/24784 diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 701da3fdbb2..288f1f92a35 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -651,10 +651,6 @@ gfc_match_use (void) "an external module name.", module_name); goto cleanup; } - - if (type == INTERFACE_USER_OP) - new->operator = operator; - break; case INTERFACE_INTRINSIC_OP: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 66749ecd75d..6fd21a579d0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -8,6 +8,11 @@ PR libfortran/32217 * gfortran.dg/unpack_zerosize_1.f90: New test case. +2007-07-08 Daniel Franke + + PR fortran/29876 + * gfortran.dg/operator_6.f90: New test. + 2007-07-08 Daniel Franke PR fortran/17711 diff --git a/gcc/testsuite/gfortran.dg/operator_6.f90 b/gcc/testsuite/gfortran.dg/operator_6.f90 new file mode 100644 index 00000000000..f7b4693f58f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/operator_6.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! +! PR fortran/29876 ICE on bad operator in ONLY clause of USE statement +! Testcase contributed by Francois-Xavier Coudert +! +module foo +end module foo + +program test + use foo, only : operator(.none.) ! { dg-error "not found in module" } + end program test +! { dg-final { cleanup-modules "foo" } }