269 lines · plain
1! RUN: %python %S/../test_symbols.py %s %flang_fc1 -fopenmp2 3! Test symbols generated in block constructs that have implicitly4! determined DSAs.5 6! Basic cases.7!DEF: /implicit_dsa_test1 (Subroutine) Subprogram8subroutine implicit_dsa_test19 !DEF: /implicit_dsa_test1/i ObjectEntity INTEGER(4)10 !DEF: /implicit_dsa_test1/x ObjectEntity INTEGER(4)11 !DEF: /implicit_dsa_test1/y ObjectEntity INTEGER(4)12 !DEF: /implicit_dsa_test1/z ObjectEntity INTEGER(4)13 integer i, x, y, z14 15 !$omp task private(y) shared(z)16 !DEF: /implicit_dsa_test1/OtherConstruct1/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)17 !DEF: /implicit_dsa_test1/OtherConstruct1/y (OmpPrivate, OmpExplicit) HostAssoc INTEGER(4)18 !DEF: /implicit_dsa_test1/OtherConstruct1/z (OmpShared, OmpExplicit) HostAssoc INTEGER(4)19 x = y + z20 !$omp end task21 22 !$omp task default(shared)23 !DEF: /implicit_dsa_test1/OtherConstruct2/x (OmpShared) HostAssoc INTEGER(4)24 !DEF: /implicit_dsa_test1/OtherConstruct2/y (OmpShared) HostAssoc INTEGER(4)25 !DEF: /implicit_dsa_test1/OtherConstruct2/z (OmpShared) HostAssoc INTEGER(4)26 x = y + z27 !$omp end task28 29 !$omp taskloop30 !DEF: /implicit_dsa_test1/OtherConstruct3/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4)31 do i = 0, 1032 !DEF: /implicit_dsa_test1/OtherConstruct3/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)33 !DEF: /implicit_dsa_test1/OtherConstruct3/y (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)34 !REF: /implicit_dsa_test1/OtherConstruct3/i35 x = y + i36 end do37 !$omp end taskloop38end subroutine39 40! Nested task with implicit firstprivate DSA variable.41!DEF: /implicit_dsa_test2 (Subroutine) Subprogram42subroutine implicit_dsa_test243 !DEF: /implicit_dsa_test2/x ObjectEntity INTEGER(4)44 integer x45 46 !$omp task47 !$omp task48 !DEF: /implicit_dsa_test2/OtherConstruct1/OtherConstruct1/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)49 x = 150 !$omp end task51 !$omp end task52end subroutine53 54! Nested tasks with implicit shared DSA variables.55!DEF: /implicit_dsa_test3 (Subroutine) Subprogram56subroutine implicit_dsa_test357 !DEF: /implicit_dsa_test3/x ObjectEntity INTEGER(4)58 !DEF: /implicit_dsa_test3/y ObjectEntity INTEGER(4)59 !DEF: /implicit_dsa_test3/z ObjectEntity INTEGER(4)60 integer x, y, z61 62 !$omp parallel63 !$omp task64 !DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct1/x (OmpShared) HostAssoc INTEGER(4)65 x = 166 !DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct1/y (OmpShared) HostAssoc INTEGER(4)67 y = 168 !$omp end task69 70 !$omp task firstprivate(x)71 !DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct2/x (OmpFirstPrivate, OmpExplicit) HostAssoc INTEGER(4)72 x = 173 !DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct2/z (OmpShared) HostAssoc INTEGER(4)74 z = 175 !$omp end task76 !$omp end parallel77end subroutine78 79! Task with implicit firstprivate DSA variables, enclosed in private context.80!DEF: /implicit_dsa_test4 (Subroutine) Subprogram81subroutine implicit_dsa_test482 !DEF: /implicit_dsa_test4/x ObjectEntity INTEGER(4)83 !DEF: /implicit_dsa_test4/y ObjectEntity INTEGER(4)84 !DEF: /implicit_dsa_test4/z ObjectEntity INTEGER(4)85 integer x, y, z86 87 !$omp parallel default(private)88 !$omp task89 !DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct1/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)90 x = 091 !DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct1/z (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)92 z = 193 !$omp end task94 95 !$omp task96 !DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct2/x (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)97 x = 198 !DEF: /implicit_dsa_test4/OtherConstruct1/OtherConstruct2/y (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)99 y = 0100 !$omp end task101 !$omp end parallel102end subroutine103 104! Inner parallel using implicit firstprivate symbol.105!DEF: /implicit_dsa_test5 (Subroutine) Subprogram106subroutine implicit_dsa_test5107 !DEF: /implicit_dsa_test5/x ObjectEntity INTEGER(4)108 integer x109 110 !$omp parallel default(private)111 !$omp task112 !$omp parallel113 !DEF: /implicit_dsa_test5/OtherConstruct1/OtherConstruct1/OtherConstruct1/x (OmpShared) HostAssoc INTEGER(4)114 x = 1115 !$omp end parallel116 !$omp end task117 !$omp end parallel118end subroutine119 120! Constructs nested inside a task with implicit DSA variables.121!DEF: /implicit_dsa_test6 (Subroutine) Subprogram122subroutine implicit_dsa_test6123 !DEF: /implicit_dsa_test6/x ObjectEntity INTEGER(4)124 !DEF: /implicit_dsa_test6/y ObjectEntity INTEGER(4)125 !DEF: /implicit_dsa_test6/z ObjectEntity INTEGER(4)126 integer x, y, z127 128 !$omp task129 !$omp parallel default(private)130 !DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct1/x (OmpPrivate) HostAssoc INTEGER(4)131 !DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct1/y (OmpPrivate) HostAssoc INTEGER(4)132 x = y133 !$omp end parallel134 135 !$omp parallel default(firstprivate) shared(y)136 !DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct2/y (OmpShared, OmpExplicit) HostAssoc INTEGER(4)137 !DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct2/x (OmpFirstPrivate) HostAssocINTEGER(4)138 !DEF: /implicit_dsa_test6/OtherConstruct1/OtherConstruct2/z (OmpFirstPrivate) HostAssocINTEGER(4)139 y = x + z140 !$omp end parallel141 !$omp end task142end subroutine143 144! Test taskgroup.145!DEF: /implicit_dsa_test7 (Subroutine) Subprogram146subroutine implicit_dsa_test7147 !DEF: /implicit_dsa_test7/x ObjectEntity INTEGER(4)148 !DEF: /implicit_dsa_test7/y ObjectEntity INTEGER(4)149 integer x, y150 151 !$omp task152 !$omp taskgroup153 !DEF: /implicit_dsa_test7/OtherConstruct1/OtherConstruct1/x HostAssoc INTEGER(4)154 !DEF: /implicit_dsa_test7/OtherConstruct1/OtherConstruct1/y HostAssoc INTEGER(4)155 x = y156 !$omp end taskgroup157 !$omp end task158end subroutine159 160! Predetermined loop iteration variable.161!DEF: /implicit_dsa_test8 (Subroutine) Subprogram162subroutine implicit_dsa_test8163 !DEF: /implicit_dsa_test8/i ObjectEntity INTEGER(4)164 integer i165 166 !$omp task167 !DEF: /implicit_dsa_test8/OtherConstruct1/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4)168 do i = 1, 10169 end do170 !$omp end task171end subroutine172 173! Test variables defined in modules default to shared DSA174!DEF: /implicit_dsa_test9_mod Module175module implicit_dsa_test9_mod176 !DEF: /implicit_dsa_test9_mod/tm3a PUBLIC (InDataStmt) ObjectEntity COMPLEX(4)177 complex tm3a/(0,0)/178 !DEF: /implicit_dsa_test9_mod/tm4a PUBLIC ObjectEntity COMPLEX(4)179 complex tm4a180contains181 !DEF: /implicit_dsa_test9_mod/implict_dsa_test9 PUBLIC (Subroutine) Subprogram182 subroutine implict_dsa_test9183 !$omp task184 !$omp task185 !DEF: /implicit_dsa_test9_mod/implict_dsa_test9/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc COMPLEX(4)186 tm3a = (1, 2)187 !DEF: /implicit_dsa_test9_mod/implict_dsa_test9/OtherConstruct1/OtherConstruct1/tm4a (OmpShared) HostAssoc COMPLEX(4)188 tm4a = (3, 4)189 !$omp end task190 !$omp end task191 !$omp taskwait192 !REF: /implicit_dsa_test9_mod/tm3a193 print *,tm3a194 end subroutine195end module196 197! Test variables in data statement default to shared DSA198!DEF: /implicit_dsa_test10 (Subroutine) Subprogram199subroutine implicit_dsa_test10200 !DEF: /implicit_dsa_test10/tm3a (Implicit, InDataStmt) ObjectEntity REAL(4)201data tm3a /3/202!$omp task203 !$omp task204 !DEF: /implicit_dsa_test10/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc REAL(4)205 tm3a = 5206 !$omp end task207!$omp end task208!$omp taskwait209 !REF: /implicit_dsa_test10/tm3a210print *,tm3a211end subroutine212 213! Test variables with the SAVE attrtibute default to shared DSA214!DEF: /implicit_dsa_test_11 (Subroutine) Subprogram215subroutine implicit_dsa_test_11216 !DEF: /implicit_dsa_test_11/tm3a SAVE ObjectEntity COMPLEX(4)217complex, save :: tm3a218!$omp task219 !$omp task220 !DEF: /implicit_dsa_test_11/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc COMPLEX(4)221 tm3a = (1, 2)222 !$omp end task223!$omp end task224!$omp taskwait225!REF: /implicit_dsa_test_11/tm3a226print *,tm3a227end subroutine228 229! Test variables referenced in a common block default to shared DSA230!DEF: /implicit_dsa_test_12 (Subroutine) Subprogram231subroutine implicit_dsa_test_12232 !DEF: /implicit_dsa_test_12/tm3a (InCommonBlock) ObjectEntity COMPLEX(4)233complex tm3a234 !DEF: /implicit_dsa_test_12/tcom CommonBlockDetails235 !REF: /implicit_dsa_test_12/tm3a236common /tcom/ tm3a237!$omp task238 !$omp task239 !DEF: /implicit_dsa_test_12/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc COMPLEX(4)240 tm3a = (1, 2)241 !$omp end task242!$omp end task243!$omp taskwait244!REF: /implicit_dsa_test_12/tm3a245print *,tm3a246end subroutine247 248! Test static duration variables with DSA set in the enclosing scope do not default to shared DSA249!DEF: /implicit_dsa_test_13_mod Module250module implicit_dsa_test_13_mod251 !DEF: /implicit_dsa_test_13_mod/a PUBLIC ObjectEntity INTEGER(4)252 integer::a=5253contains254 !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13 PUBLIC (Subroutine) Subprogram255 subroutine implicit_dsa_test_13256 !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/i ObjectEntity INTEGER(4)257 integer i258 !$omp do private(a)259 !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/OtherConstruct1/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4)260 do i=0,10261 !$omp task262 !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/OtherConstruct1/OtherConstruct1/a (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)263 !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/OtherConstruct1/OtherConstruct1/i (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4)264 a=a+i265 !$omp end task266 end do267 end subroutine implicit_dsa_test_13268end module implicit_dsa_test_13_mod269