blob: 6740ba14003b2f3258d86686db96b45d41d90c8c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
! { dg-do run }
! Checks the fix for PR31205, in which temporaries were not
! written for the interface assignment and the parentheses below.
!
! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
!
MODULE TT
TYPE data_type
INTEGER :: I=2
END TYPE data_type
INTERFACE ASSIGNMENT (=)
MODULE PROCEDURE set
END INTERFACE
CONTAINS
PURE SUBROUTINE set(x1,x2)
TYPE(data_type), INTENT(IN) :: x2
TYPE(data_type), INTENT(OUT) :: x1
CALL S1(x1,x2)
END SUBROUTINE
PURE SUBROUTINE S1(x1,x2)
TYPE(data_type), INTENT(IN) :: x2
TYPE(data_type), INTENT(OUT) :: x1
x1%i=x2%i
END SUBROUTINE
END MODULE
USE TT
TYPE(data_type) :: D,E
D%I=4
D=D
E%I=4
CALL set(E,(E))
IF (D%I.NE.4) call abort ()
IF (4.NE.E%I) call abort ()
END
! { dg-final { cleanup-modules "TT" } }
|