aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2010-01-15 02:06:23 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2010-01-15 02:06:23 +0000
commit3f298330df79dd552374eac471c5ea2824999421 (patch)
tree595eef4d8697d459dd1e666aca9c0106e7394472
parent0175478decf822d4b10d8ff850e55751a50bf70a (diff)
downloadgcc-3f298330df79dd552374eac471c5ea2824999421.zip
gcc-3f298330df79dd552374eac471c5ea2824999421.tar.gz
gcc-3f298330df79dd552374eac471c5ea2824999421.tar.bz2
re PR fortran/42684 (ICE when interface operator(xx) available through host and use assoc in module procedure)
2010-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/42684 * gfortran.dg/interface_31.f90: New test. From-SVN: r155931
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/interface_31.f9041
2 files changed, 46 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f527fce..14310b1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/42684
+ * gfortran.dg/interface_31.f90: New test.
+
2010-01-14 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/pr42747.c: New file.
diff --git a/gcc/testsuite/gfortran.dg/interface_31.f90 b/gcc/testsuite/gfortran.dg/interface_31.f90
new file mode 100644
index 0000000..3b0e8f8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/interface_31.f90
@@ -0,0 +1,41 @@
+! { dg-do compile }
+! PR42684 (42680) Ice with Interface.
+MODULE mod1
+ IMPLICIT NONE
+ TYPE ta
+ INTEGER i
+ END TYPE ta
+ INTERFACE OPERATOR(+)
+ MODULE PROCEDURE add_a
+ END INTERFACE OPERATOR(+)
+CONTAINS
+ FUNCTION add_a(lhs, rhs) RESULT(r)
+ TYPE(ta), INTENT(IN) :: lhs
+ TYPE(ta), INTENT(IN) :: rhs
+ TYPE(ta) :: r
+ !****
+ r%i = lhs%i + rhs%i
+ END FUNCTION add_a
+END MODULE mod1
+
+MODULE mod2
+ IMPLICIT NONE
+ TYPE tb
+ INTEGER j
+ END TYPE tb
+ INTERFACE OPERATOR(+)
+ MODULE PROCEDURE add_b
+ END INTERFACE OPERATOR(+)
+CONTAINS
+ SUBROUTINE other_proc()
+ USE mod1 ! Causes ICE
+ END SUBROUTINE other_proc
+ FUNCTION add_b(lhs, rhs) RESULT(r)
+ TYPE(tb), INTENT(IN) :: lhs
+ TYPE(tb), INTENT(IN) :: rhs
+ TYPE(tb) :: r
+ !****
+ r%j = lhs%j + rhs%j
+ END FUNCTION add_b
+END MODULE mod2
+! { dg-final { cleanup-modules "mod1 mod2" } }