This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/39304] ICE with MATMUL, specific/generic functions and rank checking
- From: "burnus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Jan 2010 17:59:11 -0000
- Subject: [Bug fortran/39304] ICE with MATMUL, specific/generic functions and rank checking
- References: <bug-39304-17365@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #10 from burnus at gcc dot gnu dot org 2010-01-23 17:59 -------
(In reply to comment #7)
> See previous comment - this should be suspended with PR38471. It puts the
> pressure on me to start on the array descriptor work:-(
I think there are actually two issues - one is the SPAN/array descriptor issue,
which causes an ICE if one calls the specific function directly, cf. PR 42851
for the ICE I get there.
But there seems to be an other problem: Namely, the interface of the specific
function "SD" is used instead of "SD_matrix" as the following program shows
(cf. comment 5). I think that problem is similar to the one at PR 41777.
MODULE deriv_class
IMPLICIT NONE
TYPE func
REAL :: value, xx(1)
END TYPE func
INTERFACE SD
MODULE PROCEDURE SD, sd_matrix
END INTERFACE
CONTAINS
FUNCTION SD(x) RESULT (res)
TYPE (func), INTENT (in), TARGET :: x
REAL , DIMENSION (:), POINTER :: res
res => x%xx
END FUNCTION SD
FUNCTION SD_matrix(x) RESULT (res)
TYPE (func), DIMENSION (:, :), INTENT (in), TARGET :: x
REAL , DIMENSION (:, :), POINTER :: res
res => x(1,1)%xx
END FUNCTION SD_matrix
FUNCTION matmul_k21(a) RESULT (res)
TYPE (func), DIMENSION (:, :), INTENT (in) :: a
TYPE (func), DIMENSION (SIZE(a, 1)), TARGET :: res
REAL, DIMENSION (:), POINTER :: ptr
ptr = MATMUL(SD(a), (/ 1 /))
END FUNCTION matmul_k21
END MODULE deriv_class
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39304