1! { dg-do compile } 2! PR fortran/36316 3! 4! gfortran generated a mismatching tree ("type mismatch in binary expression") 5! for array bounds (mixing integer kind=4/kind=8 without fold_convert). 6! 7MODULE YOMCAIN 8 9IMPLICIT NONE 10SAVE 11 12TYPE distributed_vector 13REAL, pointer :: local(:) 14INTEGER(4) :: global_length,local_start 15INTEGER(8) :: local_end 16END TYPE distributed_vector 17 18INTERFACE ASSIGNMENT (=) 19MODULE PROCEDURE assign_ar_dv 20END INTERFACE 21 22INTERFACE OPERATOR (*) 23MODULE PROCEDURE multiply_dv_dv 24END INTERFACE 25 26CONTAINS 27 28SUBROUTINE assign_ar_dv (handle,pvec) 29 30! copy array to the distributed_vector 31 32REAL, INTENT(IN) :: pvec(:) 33TYPE (distributed_vector), INTENT(INOUT) :: handle 34 35handle%local(:) = pvec(:) 36 37RETURN 38END SUBROUTINE assign_ar_dv 39 40FUNCTION multiply_dv_dv (handle1,handle2) 41 42! multiply two distributed_vectors 43 44TYPE (distributed_vector), INTENT(IN) :: handle2 45TYPE (distributed_vector), INTENT(IN) :: handle1 46REAL :: multiply_dv_dv(handle1%local_start:handle1%local_end) 47 48multiply_dv_dv = handle1%local(:) * handle2%local(:) 49 50RETURN 51END FUNCTION multiply_dv_dv 52 53 54SUBROUTINE CAININAD_SCALE_DISTVEC () 55TYPE (distributed_vector) :: PVAZG 56TYPE (distributed_vector) :: ZTEMP 57TYPE (distributed_vector) :: SCALP_DV 58 59ZTEMP = PVAZG * SCALP_DV 60END SUBROUTINE CAININAD_SCALE_DISTVEC 61END MODULE YOMCAIN 62