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

Reply via email to