<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/130312>130312</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Flang OpenMP default(none) clause is ignored when there is a single construct inside a parallel construct
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          scamp-nvidia
      </td>
    </tr>
</table>

<pre>
    The compiler should give a compilation error with the attached test program because we have specified "default(none)" but have not specified the data-sharing for variable "x". This incorrect behavior only occurs when there is a single construct inside the parallel construct.

The relevant text from the OpenMP 6.0 specification is as follows

> 223:3  7.5.1 default Clause
> 224:11 * If data-sharing-attribute is none, each variable that is referenced in the construct and does
> 224:12 not have a predetermined data-sharing attribute must have an explicitly determined
> 224:13 data-sharing attribute.

Instead, we get an incorrect successful compilation with flang - whereas we get correct failures with nvfortran and gfortran.

Our sample code:
test.F90

```
Program main
  implicit none
  integer :: x
  x = 1
  !$omp parallel default(none)
  !$omp single
  print *, "x=", x
  !$omp end single
  !$omp end parallel
End Program main
```
Compiling with Flang versus other compilers:
```
scamp@dev-sky5:~$ flang --version
flang version 21.0.0git (https://github.com/llvm/llvm-project db5e4016c0332e7e5c0950414bb0b252975663ed)
Target: x86_64-unknown-linux-gnu
....
scamp@dev-sky5:~$ flang test.F90 -o test -fopenmp
flang-21: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
scamp@dev-sky5:~$ ./test
 x= 1
scamp@dev-sky5:~$ gfortran test.F90 -o test -fopenmp
test.F90:16:18:

   16 |   print *, "x=", x
      |                  ^
Error: ‘x’ not specified in enclosing ‘parallel’
test.F90:14:30:

   14 |   !$omp parallel default(none)
      |                              ^
note: enclosing ‘parallel’
scamp@dev-sky5:~$ nvfortran test.F90 -o test -mp
NVFORTRAN-S-0155-x must appear in a SHARED or PRIVATE clause (test.F90: 16)
  0 inform,   0 warnings,   1 severes, 0 fatal for main
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVk1zozgQ_TXypQtKCIPtgw9MEtfOYWemMqnZ45ZADWhHSJQkbOeyv31LfMR2spnNUqkYCfXXe68buHOy0Yh7kn0i2f2KD741du8q3vWRPkoh-ao04nn_1CJUpuulQguuNYMS0MgjAp-3uZdGA1prLJykb8G3CNx7XrUowKPz0FvTWN5BiRUfHMIJoeVHBNdjJWuJAghjAms-KE_YVhuNhO0IY1AOfjqqjb86HkII7nnkWm6lbqA2Fo7cSl4qDM7OhLEYnlrpQOrKWIuVhxJbfpTGgtHqGUxVDdbBqUUd_FkE6YCDk7pRoWTtvB0qD1I7KXAM2XPLlUJ1eRoTWhBaBJAsKjxy7cHj2UNtTTfafO1R__4N8pgu-VcTYiGag9ooZU5uckPSB2AsJWmRAmziLE5gRgXuVEDu5cyapEWSAGEFfK5voIi491aWgx_rmaC8A-RVewHIt9yHpxZrtKgrFCBHEK7K5lqAMOhuQ7KRiJERDr1FgR5tJzWKWz4uSXSDWww04LlXspJePcPF8jZC-o6jGenP2nnkItR0QmgwJHpFsRuqCp2rB3WjzlGXteK6gSgwbpG7xX4xrblUg0U3HdbH2lhvuR6BaObFnMTXwYLjXT_qRCBJw2ZQenzY0ZnKnM5_tPg2y7_jUhNaAMhugmGiZ9zRHhu0EFylBZzHzTOQ9B6S8Z6whLC16fqLCN82zO3BScnjZm-l9kEtAbexPdJ7wlhYnV9ZoRbXlrcPltiEFg9awKvCrmu-G9EPDI5wHkbsj2jd4MCEdnsZKm6C79p4nEJkTQUeI_fzOSNp8Tdh64XBKPiRJoSsX_wGmlkS05g2MpS6bb3vR9_sQNihkb4dyrgyHWEHpY7LT9Rb81egX5QZrmmSVzRNGW4wq-guo-tkXZa0ZBnbbbI8T1FMOD9x26Afqdrmf-braNA_tTnpSEk9nKNGD4QWcRzH_1nNIhuIzDQso9r0qLt-qS5iSYhz4lZL3YTbeaS4oe-NDQNqdiUdOC-VCm2GVnaoPVdAsk_RH9c7kelDU5Ds_hfJxYQdQjpBBOdFhu8dXtrjl8W89EdaJHn4t52JDzKDJAeyuYMPSDVc09FXF8kegi7DiyigRB4Y2VKy256Xu92rt4jUgLpSJsj9cvxF44vVq9zDlErpTe7rOaEPN-m7NbytRxsfBsxHM32Poss8e8vRSM-XH4evj0-PxZfoe0STLIvO0-jmfY_cBqw4fP-teHy4B2Ph2-PnH8XTA1Tjaym02xVEkORLoRSkro3tAn1hNavYTesEHB7R4rikUPOg1_Aqfz1QVmKfil264yvcJ5t1kuY7Stmq3VOeiXVJN6Wo85ptWJ6wdMu2FPOdyJIdW8k9oyyjKd0kmzRf01jseIV1lpS7nUiSFMmaYselisM0iI1tVtK5AfdJStOErRQvUbnlK8nux5lRDo0ja6qk8-5i56VXuJ8m3dyib9hfAAvfJY02FsWHP0D4v3x-rAar9v9v0BF2GAt0hB3mGo979k8AAAD__4VrKhU">