| ! 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, OmpExplicit) HostAssoc INTEGER(4) |
| !DEF: /implicit_dsa_test1/OtherConstruct1/z (OmpShared, OmpExplicit) HostAssoc INTEGER(4) |
| x = y + z |
| !$omp end task |
| |
| !$omp task default(shared) |
| !DEF: /implicit_dsa_test1/OtherConstruct2/x (OmpShared) HostAssoc INTEGER(4) |
| !DEF: /implicit_dsa_test1/OtherConstruct2/y (OmpShared) HostAssoc INTEGER(4) |
| !DEF: /implicit_dsa_test1/OtherConstruct2/z (OmpShared) 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 (OmpShared) HostAssoc INTEGER(4) |
| x = 1 |
| !DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct1/y (OmpShared) HostAssoc INTEGER(4) |
| y = 1 |
| !$omp end task |
| |
| !$omp task firstprivate(x) |
| !DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct2/x (OmpFirstPrivate, OmpExplicit) HostAssoc INTEGER(4) |
| x = 1 |
| !DEF: /implicit_dsa_test3/OtherConstruct1/OtherConstruct2/z (OmpShared) 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 (OmpShared) 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, OmpExplicit) 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. |
| !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/OtherConstruct1/x HostAssoc INTEGER(4) |
| !DEF: /implicit_dsa_test7/OtherConstruct1/OtherConstruct1/y HostAssoc INTEGER(4) |
| x = y |
| !$omp end taskgroup |
| !$omp end task |
| end subroutine |
| |
| ! Predetermined loop iteration variable. |
| !DEF: /implicit_dsa_test8 (Subroutine) Subprogram |
| subroutine implicit_dsa_test8 |
| !DEF: /implicit_dsa_test8/i ObjectEntity INTEGER(4) |
| integer i |
| |
| !$omp task |
| !DEF: /implicit_dsa_test8/OtherConstruct1/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4) |
| do i = 1, 10 |
| end do |
| !$omp end task |
| end subroutine |
| |
| ! Test variables defined in modules default to shared DSA |
| !DEF: /implicit_dsa_test9_mod Module |
| module implicit_dsa_test9_mod |
| !DEF: /implicit_dsa_test9_mod/tm3a PUBLIC (InDataStmt) ObjectEntity COMPLEX(4) |
| complex tm3a/(0,0)/ |
| !DEF: /implicit_dsa_test9_mod/tm4a PUBLIC ObjectEntity COMPLEX(4) |
| complex tm4a |
| contains |
| !DEF: /implicit_dsa_test9_mod/implict_dsa_test9 PUBLIC (Subroutine) Subprogram |
| subroutine implict_dsa_test9 |
| !$omp task |
| !$omp task |
| !DEF: /implicit_dsa_test9_mod/implict_dsa_test9/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc COMPLEX(4) |
| tm3a = (1, 2) |
| !DEF: /implicit_dsa_test9_mod/implict_dsa_test9/OtherConstruct1/OtherConstruct1/tm4a (OmpShared) HostAssoc COMPLEX(4) |
| tm4a = (3, 4) |
| !$omp end task |
| !$omp end task |
| !$omp taskwait |
| !REF: /implicit_dsa_test9_mod/tm3a |
| print *,tm3a |
| end subroutine |
| end module |
| |
| ! Test variables in data statement default to shared DSA |
| !DEF: /implicit_dsa_test10 (Subroutine) Subprogram |
| subroutine implicit_dsa_test10 |
| !DEF: /implicit_dsa_test10/tm3a (Implicit, InDataStmt) ObjectEntity REAL(4) |
| data tm3a /3/ |
| !$omp task |
| !$omp task |
| !DEF: /implicit_dsa_test10/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc REAL(4) |
| tm3a = 5 |
| !$omp end task |
| !$omp end task |
| !$omp taskwait |
| !REF: /implicit_dsa_test10/tm3a |
| print *,tm3a |
| end subroutine |
| |
| ! Test variables with the SAVE attrtibute default to shared DSA |
| !DEF: /implicit_dsa_test_11 (Subroutine) Subprogram |
| subroutine implicit_dsa_test_11 |
| !DEF: /implicit_dsa_test_11/tm3a SAVE ObjectEntity COMPLEX(4) |
| complex, save :: tm3a |
| !$omp task |
| !$omp task |
| !DEF: /implicit_dsa_test_11/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc COMPLEX(4) |
| tm3a = (1, 2) |
| !$omp end task |
| !$omp end task |
| !$omp taskwait |
| !REF: /implicit_dsa_test_11/tm3a |
| print *,tm3a |
| end subroutine |
| |
| ! Test variables referenced in a common block default to shared DSA |
| !DEF: /implicit_dsa_test_12 (Subroutine) Subprogram |
| subroutine implicit_dsa_test_12 |
| !DEF: /implicit_dsa_test_12/tm3a (InCommonBlock) ObjectEntity COMPLEX(4) |
| complex tm3a |
| !DEF: /implicit_dsa_test_12/tcom CommonBlockDetails |
| !REF: /implicit_dsa_test_12/tm3a |
| common /tcom/ tm3a |
| !$omp task |
| !$omp task |
| !DEF: /implicit_dsa_test_12/OtherConstruct1/OtherConstruct1/tm3a (OmpShared) HostAssoc COMPLEX(4) |
| tm3a = (1, 2) |
| !$omp end task |
| !$omp end task |
| !$omp taskwait |
| !REF: /implicit_dsa_test_12/tm3a |
| print *,tm3a |
| end subroutine |
| |
| ! Test static duration variables with DSA set in the enclosing scope do not default to shared DSA |
| !DEF: /implicit_dsa_test_13_mod Module |
| module implicit_dsa_test_13_mod |
| !DEF: /implicit_dsa_test_13_mod/a PUBLIC ObjectEntity INTEGER(4) |
| integer::a=5 |
| contains |
| !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13 PUBLIC (Subroutine) Subprogram |
| subroutine implicit_dsa_test_13 |
| !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/i ObjectEntity INTEGER(4) |
| integer i |
| !$omp do private(a) |
| !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/OtherConstruct1/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4) |
| do i=0,10 |
| !$omp task |
| !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/OtherConstruct1/OtherConstruct1/a (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4) |
| !DEF: /implicit_dsa_test_13_mod/implicit_dsa_test_13/OtherConstruct1/OtherConstruct1/i (OmpFirstPrivate, OmpImplicit) HostAssoc INTEGER(4) |
| a=a+i |
| !$omp end task |
| end do |
| end subroutine implicit_dsa_test_13 |
| end module implicit_dsa_test_13_mod |