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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
! RUN: %python %S/../test_symbols.py %s %flang_fc1 -fopenmp
! Test symbols generated in block constructs that have implicitly
! determined DSAs.
! Basic cases.
!DEF: /implicit_dsa_test1 (Subroutine) Subprogram
subroutine implicit_dsa_test1
!DEF: /implicit_dsa_test1/i ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test1/x ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test1/y ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test1/z ObjectEntity INTEGER(4)
integer i, x, y, z
!$omp task private(y) shared(z)
!DEF: /implicit_dsa_test1/OtherConstruct1/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test1/OtherConstruct1/y (OmpPrivate) HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test1/OtherConstruct1/z (OmpShared) HostAssoc INTEGER(4)
x = y + z
!$omp end task
!$omp task default(shared)
!DEF: /implicit_dsa_test1/OtherConstruct2/x HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test1/OtherConstruct2/y HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test1/OtherConstruct2/z HostAssoc INTEGER(4)
x = y + z
!$omp end task
!$omp taskloop
!DEF: /implicit_dsa_test1/OtherConstruct3/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4)
do i = 0, 10
!DEF: /implicit_dsa_test1/OtherConstruct3/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test1/OtherConstruct3/y (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
!REF: /implicit_dsa_test1/OtherConstruct3/i
x = y + i
end do
!$omp end taskloop
end subroutine
! Nested task with implicit firstprivate DSA variable.
!DEF: /implicit_dsa_test2 (Subroutine) Subprogram
subroutine implicit_dsa_test2
!DEF: /implicit_dsa_test2/x ObjectEntity INTEGER(4)
integer x
!$omp task
!$omp task
!DEF: /implicit_dsa_test2/OtherConstruct1/OtherConstruct1/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
x = 1
!$omp end task
!$omp end task
end subroutine
! Nested tasks with implicit shared DSA variables.
!DEF: /implicit_dsa_test3 (Subroutine) Subprogram
subroutine implicit_dsa_test3
!DEF: /implicit_dsa_test3/x ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test3/y ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test3/z ObjectEntity INTEGER(4)
integer x, y, z
!$omp parallel
!$omp task
!DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct1/x HostAssoc INTEGER(4)
x = 1
!DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct1/y HostAssoc INTEGER(4)
y = 1
!$omp end task
!$omp task firstprivate(x)
!DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct2/x (OmpFirstPrivate) HostAssoc INTEGER(4)
x = 1
!DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct2/z HostAssoc INTEGER(4)
z = 1
!$omp end task
!$omp end parallel
end subroutine
! Task with implicit firstprivate DSA variables, enclosed in private context.
!DEF: /implicit_dsa_test4 (Subroutine) Subprogram
subroutine implicit_dsa_test4
!DEF: /implicit_dsa_test4/x ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test4/y ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test4/z ObjectEntity INTEGER(4)
integer x, y, z
!$omp parallel default(private)
!$omp task
!DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct1/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
x = 0
!DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct1/z (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
z = 1
!$omp end task
!$omp task
!DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct2/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
x = 1
!DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct2/y (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
y = 0
!$omp end task
!$omp end parallel
end subroutine
! Inner parallel using implicit firstprivate symbol.
!DEF: /implicit_dsa_test5 (Subroutine) Subprogram
subroutine implicit_dsa_test5
!DEF: /implicit_dsa_test5/x ObjectEntity INTEGER(4)
integer x
!$omp parallel default(private)
!$omp task
!$omp parallel
!DEF: /implicit_dsa_test5/OtherConstruct1/OtherConstruct1/OtherConstruct1/x HostAssoc INTEGER(4)
x = 1
!$omp end parallel
!$omp end task
!$omp end parallel
end subroutine
! Constructs nested inside a task with implicit DSA variables.
!DEF: /implicit_dsa_test6 (Subroutine) Subprogram
subroutine implicit_dsa_test6
!DEF: /implicit_dsa_test6/x ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test6/y ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test6/z ObjectEntity INTEGER(4)
integer x, y, z
!$omp task
!$omp parallel default(private)
!DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct1/x (OmpPrivate) HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct1/y (OmpPrivate) HostAssoc INTEGER(4)
x = y
!$omp end parallel
!$omp parallel default(firstprivate) shared(y)
!DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct2/y (OmpShared) HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct2/x (OmpFirstPrivate) HostAssocINTEGER(4)
!DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct2/z (OmpFirstPrivate) HostAssocINTEGER(4)
y = x + z
!$omp end parallel
!$omp end task
end subroutine
! Test taskgroup - it uses the same scope as task.
!DEF: /implicit_dsa_test7 (Subroutine) Subprogram
subroutine implicit_dsa_test7
!DEF: /implicit_dsa_test7/x ObjectEntity INTEGER(4)
!DEF: /implicit_dsa_test7/y ObjectEntity INTEGER(4)
integer x, y
!$omp task
!$omp taskgroup
!DEF: /implicit_dsa_test7/OtherConstruct1/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
!DEF: /implicit_dsa_test7/OtherConstruct1/y (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)
x = y
!$omp end taskgroup
!$omp end task
end subroutine
|