annotate gcc/testsuite/gfortran.dg/associate_40.f90 @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 ! { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 ! { dg-options "-fdump-tree-original" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 !
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 ! Test the fix for the second part of PR87359 in which the reallocation on
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 ! assignment for components of associate names was disallowed by r264358.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 ! -fcheck-all exposed the mismatch in array shapes. The deallocations at
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 ! the end of the main program are there to make sure that valgrind does
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 ! not report an memory leaks.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 !
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 ! Contributed by Juergen Reuter <juergen.reuter@desy.de>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 !
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 module phs_fks
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 implicit none
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 private
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 public :: phs_identifier_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 public :: phs_fks_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 type :: phs_identifier_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 integer, dimension(:), allocatable :: contributors
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 contains
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 procedure :: init => phs_identifier_init
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 end type phs_identifier_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 type :: phs_fks_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 type(phs_identifier_t), dimension(:), allocatable :: phs_identifiers
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 end type phs_fks_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 contains
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 subroutine phs_identifier_init &
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 (phs_id, contributors)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 class(phs_identifier_t), intent(out) :: phs_id
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 integer, intent(in), dimension(:) :: contributors
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 allocate (phs_id%contributors (size (contributors)))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 phs_id%contributors = contributors
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 end subroutine phs_identifier_init
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 end module phs_fks
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 !!!!!
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 module instances
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 use phs_fks
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 implicit none
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 private
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 public :: process_instance_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 type :: nlo_event_deps_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 type(phs_identifier_t), dimension(:), allocatable :: phs_identifiers
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 end type nlo_event_deps_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 type :: process_instance_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 type(phs_fks_t), pointer :: phs => null ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 type(nlo_event_deps_t) :: event_deps
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 contains
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 procedure :: init => process_instance_init
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 procedure :: setup_real_event_kinematics => pi_setup_real_event_kinematics
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 end type process_instance_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 contains
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 subroutine process_instance_init (instance)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 class(process_instance_t), intent(out), target :: instance
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 integer :: i
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 integer :: i_born, i_real
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 allocate (instance%phs)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 end subroutine process_instance_init
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 subroutine pi_setup_real_event_kinematics (process_instance)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 class(process_instance_t), intent(inout) :: process_instance
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 integer :: i_real, i
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 associate (event_deps => process_instance%event_deps)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 i_real = 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 associate (phs => process_instance%phs)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 allocate (phs%phs_identifiers (3))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 call phs%phs_identifiers(1)%init ([1])
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 call phs%phs_identifiers(2)%init ([1,2])
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 call phs%phs_identifiers(3)%init ([1,2,3])
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 process_instance%event_deps%phs_identifiers = phs%phs_identifiers ! Error: mismatch in array shapes.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 end associate
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 end associate
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 end subroutine pi_setup_real_event_kinematics
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 end module instances
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 !!!!!
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 program main
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 use instances, only: process_instance_t
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 implicit none
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 type(process_instance_t), allocatable, target :: process_instance
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 allocate (process_instance)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 call process_instance%init ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 call process_instance%setup_real_event_kinematics ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 if (associated (process_instance%phs)) deallocate (process_instance%phs)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94 if (allocated (process_instance)) deallocate (process_instance)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 end program main
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 ! { dg-final { scan-tree-dump-times "__builtin_realloc" 2 "original" } }