-
Notifications
You must be signed in to change notification settings - Fork 11.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Flang][OpenMP] Issues in copyprivate #86907
Comments
#88430 was merged, fixing test1. |
@llvm/issue-subscribers-flang-frontend Author: None (harishch4)
Here is a list of test cases that are failing in flang-new but are working in other compilers.
Godbolt [link](https://godbolt.org/z/b3hKvKjEj)
```
subroutine test1
use omp_lib
implicit none
character xz
common/c/xz
!$omp threadprivate(/c/)
!$omp parallel num_threads(4)
!$omp single
xz = 'c'
!$omp end single copyprivate(/c/)
!$omp end parallel
end
error: COMMON block must be declared in the same scoping unit in which the OpenMP directive or clause appears
!fails in gfortran but all other compilers accepting this subroutine test2
subroutine test3 error: COPYPRIVATE variable 'rz' is not PRIVATE or THREADPRIVATE in outer context
subroutine test4 error: COPYPRIVATE variable 'fz' is not PRIVATE or THREADPRIVATE in outer context
|
There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Fixes llvm#87214 and llvm#86907
#95799 will fix all the remaining issues reported here.
I'll open a separate issue for it. |
Opened #95801 to track the lowering issue in copyprivate. |
There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Besides that, shared symbols were not being properly represented in some cases. When there was no previously declared private (implicit) symbol, no new association symbols, representing shared ones, were being created. These symbols must always be inserted in constructs that may privatize the original symbol: parallel, teams and task generating constructs. Fixes #87214 and #86907
Fixed by #95799. |
There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Besides that, shared symbols were not being properly represented in some cases. When there was no previously declared private (implicit) symbol, no new association symbols, representing shared ones, were being created. These symbols must always be inserted in constructs that may privatize the original symbol: parallel, teams and task generating constructs. Fixes llvm#87214 and llvm#86907
There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Besides that, shared symbols were not being properly represented in some cases. When there was no previously declared private (implicit) symbol, no new association symbols, representing shared ones, were being created. These symbols must always be inserted in constructs that may privatize the original symbol: parallel, teams and task generating constructs. Fixes llvm#87214 and llvm#86907 (cherry picked from commit eb9bf18)
There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Besides that, shared symbols were not being properly represented in some cases. When there was no previously declared private (implicit) symbol, no new association symbols, representing shared ones, were being created. These symbols must always be inserted in constructs that may privatize the original symbol: parallel, teams and task generating constructs. Fixes llvm#87214 and llvm#86907 (cherry picked from commit eb9bf18)
There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Besides that, shared symbols were not being properly represented in some cases. When there was no previously declared private (implicit) symbol, no new association symbols, representing shared ones, were being created. These symbols must always be inserted in constructs that may privatize the original symbol: parallel, teams and task generating constructs. Fixes #87214 and #86907
There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Besides that, shared symbols were not being properly represented in some cases. When there was no previously declared private (implicit) symbol, no new association symbols, representing shared ones, were being created. These symbols must always be inserted in constructs that may privatize the original symbol: parallel, teams and task generating constructs. Fixes llvm#87214 and llvm#86907
Here is a list of test cases that are failing in flang-new but are working in other compilers.
Godbolt link
The text was updated successfully, but these errors were encountered: