diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-01-15 02:06:23 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-01-15 02:06:23 +0000 |
commit | 3f298330df79dd552374eac471c5ea2824999421 (patch) | |
tree | 595eef4d8697d459dd1e666aca9c0106e7394472 | |
parent | 0175478decf822d4b10d8ff850e55751a50bf70a (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/interface_31.f90 | 41 |
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" } } |