<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/142833>142833</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang][OpenMP] Incorrect signature for omp_get_cancellation()
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:openmp
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
eugeneepshteyn
</td>
</tr>
</table>
<pre>
Currently, `omp_get_cancellation()` is declared like this in openmp/runtime/src/include/omp_lib.F90.var:
```
400 function omp_get_cancellation() bind(c)
401 use omp_lib_kinds
402 integer (kind=omp_integer_kind) omp_get_cancellation
403 end function omp_get_cancellation
```
In OpenMP 5.2 spec, Fortran declaration for this function is as follows:
```
logical function omp_get_cancellation()
```
The return type difference prevents using `omp_get_cancellation()` in logical expressions:
```
use omp_lib
logical :: flag = .TRUE.
flag = flag .and. omp_get_cancellation()
end
```
Error:
```
$ flang -c -fopenmp cancellation.f90
flang-21: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
error: Semantic errors in cancellation.f90
./cancellation.f90:3:8: error: Operands of .AND. must be LOGICAL; have LOGICAL(4) and INTEGER(4)
flag = flag .and. omp_get_cancellation()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
flang version:
```
$ flang --version
flang version 21.0.0git (https://github.com/eugeneepshteyn/llvm-project.git cf348e886d0b30a4bf3e810efc00b2da0f7a4322)
Target: x86_64-unknown-linux-gnu
Thread model: posix
...
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VU1v4zgM_TXKhYihyB91Dj64TT0oMDtdzHaxx0KWaUdbhTIkOW3__UJO2qaZTnf2sIYPNkE-Pj5SovReD4RYsfyS5ZuFnMLWugqnAQlx9NuAz7RobfdcXU3OIQXzzMQVsILb3Xg_YLhXkhQaI4O2xETJxJoVHLSHDpWRDjsw-gEhbLUHTWBHpN3IROMmCnqHTDTeKSYaTcpMXfyPyEa3SbPmyV46ltaM16zgx5fXkHEOb08_kYrZ4eeUoNXUMVGqSG8GWMHpM3mEY9r7B02dPzgJ0BRwQAdMlNHO0k10O1pn14j-YeIZIQWk7l8Yvi_uhuB2RPrtd8gTAX5EFQVvrAtO0lHUOQ566w6yvsJrD9JDb42xj_5H3YwdtJLmVwQ7i7zbIjgMkyMIzyNCp_seHZJCGB3ukYKHyWsafmEyCF544NPo0Htt6QOyJy05oR790hp6Iwdg6QaSu-9_XifAeP1qmj8SSV3yeX1I3VnKa-fsB-PGRBZBaYClgmV_mGA4xUz6NT9yoGEpVpHio3SkaYifx376aRytC1GBA5z24IM2sxDo9A4pxBLzy-Vfp5alHWfi-SayPnKEP3AnKWgFs2U-W-eUGK8TJpofzGmdsrQuI8or3O2ITlLnwfaQ1N82CewmH6BF-Hr75eaq_srSS9jK_du_KLM4-5I6uPl2d_3l-vvRFCcf_nM7gOXX__v7vrGHLuzRxRH8tO_LF6ezIBCrhCd80CHeENsQxnmSRcNEM-iwndpE2R0TzfsblYnGmP1uOTr7N6qQxHjVp1mJZVl0vE25zNo-xXLFsVect6KTvL-QWSrEQa076QYMsXFPZXFfZMuJHsg-0tJomp6WA03zqXUoO9jZDk10Ha3XT3EokuS01EVXpd06XcsFVquLbM0LUaTFYltlsi1VtsYLFKhKha3q1TpfFSvJhVRCLHQluMh5wbNVmaV5kfQt5t1aYNbLjq_xgmUcd1KbJJabWDcstPcTVqtMlGm6MLJF4-flI8QsLEvrlw0h4kJy1SxUOw2eZdxoH_wbVtDBzKvrEJpvWH55OGss38ANKescqgBxx8kwOZyvzJ9P4WJypvqkiTHxWevi4ooVeSaaY1H7SvwTAAD__104R5k">