tblah wrote: PR stack:
- https://github.com/llvm/llvm-project/pull/164586 - https://github.com/llvm/llvm-project/pull/164587 This is all to fix the following code example provided by Themos Tsikas at AMD. (run with OMP_CANCELLATION=true in the environment) ``` Program cancel_bug Use OMP_LIB, Only: omp_get_thread_num Logical :: flag(0:11) flag = .FALSE. flag(11) = .TRUE. ! If no cancellation happens, we expect all flags to become true !$OMP PARALLEL NUM_THREADS(12) ! one thread activates cancellation !$OMP CANCEL PARALLEL IF(omp_get_thread_num()==11) print '(I4,1X,12L1)',omp_get_thread_num(), flag ! this one should act as cancellation point, even though expression evaluates to false and does not activate cancellation. !$OMP CANCEL PARALLEL IF(.FALSE.) flag(omp_get_thread_num()) = .TRUE. !$OMP END PARALLEL ! If all flags are true, second cancellation point was ignored, bug print '(12L1)', flag End Program cancel_bug ``` https://github.com/llvm/llvm-project/pull/164587 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
