summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-31 11:20:22 +0000
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-31 11:20:22 +0000
commite1afc7bac80d55151bac7fea0e005a3fb2cecb76 (patch)
treedce35256c392415d4df903f203fc6983ac3ba369
parent17cd0649d0ad2c65d4a730eda0200bd4281ddbeb (diff)
downloadppe42-gcc-e1afc7bac80d55151bac7fea0e005a3fb2cecb76.tar.gz
ppe42-gcc-e1afc7bac80d55151bac7fea0e005a3fb2cecb76.zip
2010-12-31 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/45338 * resolve.c (resolve_operator): Mark function for user-defined operator as referenced. 2010-12-31 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/45338 * gfortran.dg/userdef_operator_2.f90: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168366 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c9
-rw-r--r--gcc/testsuite/ChangeLog13
-rw-r--r--gcc/testsuite/gfortran.dg/userdef_operator_2.f9017
4 files changed, 38 insertions, 7 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 696ad58ff2f..c2103314bef 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-31 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/45338
+ * resolve.c (resolve_operator): Mark function for user-defined
+ operator as referenced.
+
2010-12-31 Janus Weil <janus@gcc.gnu.org>
PR fortran/46971
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 70811469f12..9a5dcc1040e 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -3793,9 +3793,12 @@ resolve_operator (gfc_expr *e)
sprintf (msg, _("Operand of user operator '%s' at %%L is %s"),
e->value.op.uop->name, gfc_typename (&op1->ts));
else
- sprintf (msg, _("Operands of user operator '%s' at %%L are %s/%s"),
- e->value.op.uop->name, gfc_typename (&op1->ts),
- gfc_typename (&op2->ts));
+ {
+ sprintf (msg, _("Operands of user operator '%s' at %%L are %s/%s"),
+ e->value.op.uop->name, gfc_typename (&op1->ts),
+ gfc_typename (&op2->ts));
+ e->value.op.uop->op->sym->attr.referenced = 1;
+ }
goto bad_op;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b8798c78555..4e4601de1bb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-31 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/45338
+ * gfortran.dg/userdef_operator_2.f90: New test case.
+
2010-12-31 Janus Weil <janus@gcc.gnu.org>
PR fortran/46971
@@ -6,16 +11,16 @@
2010-12-30 Nicola Pero <nicola.pero@meta-innovation.com>
* objc.dg/method-conflict-3.m: New.
- * objc.dg/method-conflict-4.m: New.
- * obj-c++.dg/method-conflict-3.m: New.
+ * objc.dg/method-conflict-4.m: New.
+ * obj-c++.dg/method-conflict-3.m: New.
* obj-c++.dg/method-conflict-4.mm: New.
2010-12-30 Nicola Pero <nicola.pero@meta-innovation.com>
-
+
* objc.dg/class-extension-3.m: Updated.
* objc.dg/method-1.m: Updated.
* objc.dg/method-conflict-1.m: New.
- * objc.dg/method-conflict-2.m: New.
+ * objc.dg/method-conflict-2.m: New.
* obj-c++.dg/class-extension-3.mm: Updated.
* obj-c++.dg/method-8.mm: Updated.
* obj-c++.dg/method-conflict-1.mm: New.
diff --git a/gcc/testsuite/gfortran.dg/userdef_operator_2.f90 b/gcc/testsuite/gfortran.dg/userdef_operator_2.f90
new file mode 100644
index 00000000000..83392c6b6c3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/userdef_operator_2.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! PR 45338 - no ICE when cmp is not used explicitly.
+! Test case by Simon Smart
+module test_mod
+ implicit none
+contains
+ subroutine test_fn (cmp)
+ interface operator(.myop.)
+ pure function cmp (a, b) result(ret)
+ integer, intent(in) :: a, b
+ logical ret
+ end function cmp
+ end interface
+ integer :: a, b
+ print*, a .myop. b
+ end subroutine test_fn
+end module test_mod
OpenPOWER on IntegriCloud