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