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

    <tr>
        <th>Summary</th>
        <td>
            Flang OpenMP doesn't appear to correctly process metadirectives in .F files and warn the user its not yet implemented.
        </td>
    </tr>

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

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

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

<pre>
    Testing SPEC Accel V2 OMP has presented an issue with how Flang OpenMP processes .F files when metadirectives are used. Consider the following example:
test.F
```
#define OMP_TARGET        .true.
#define OMP_SIMD .false.
      program test
      implicit none
      integer     i,j,n
 n = 100
!$omp  metadirective
!$omp& when(user={condition(OMP_TARGET.or.OMP_SIMD)}:
!$omp&      target teams distribute parallel do )
!$omp& default(target teams loop)
      do i=0,n
 do j=0,n
          write(*,*) "Test"
        enddo
      enddo
 return
      end program
```
If I try to compile this with a recent Flang build, it "appears" to compile correctly using the OpenMP directive. However, it entirely ignores it as a comment instead, I suspect. Whereas, if I copy the same .F file to a .F90 file, then I correctly get an error message telling me that Flang does not yet have metadirectives implemented. 
```
scamp@genx4:/local/home/scamp/450.md_lop_1$ flang test.F -fopenmp -fopenmp-version=50 -c
warning: OpenMP support for version 50 in flang is still incomplete
scamp@genx4:/local/home/scamp/450.md_lop_1$ cp -f test.F test.F90
scamp@genx4:/local/home/scamp/450.md_lop_1$ flang test.F90 -fopenmp -fopenmp-version=50 -c
warning: OpenMP support for version 50 in flang is still incomplete
error: loc("/local/home/scamp/450.md_lop_1/test.F90":6:7): /proj/build/llvm/Linux_x86_64/flang/lib/Lower/OpenMP/OpenMP.cpp:3495: not yet implemented: METADIRECTIVE
LLVM ERROR: aborting
```
Obviously this behavior could lead to user confusion. 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8VU9v47gP_TTKhajhyM6_gw-eJP79AkzRQaeYPRayRNsqZEmQ5KT59gvZSZp29rDALtYoGkuiqcfHR5J5L1uNWJDFN7LYzdgQOuMKz1lvH_RRCslmtRHn4gV9kLqFnz_2Wyg5RwW_KDw9_oCOebAOPeqAApgG6f2AcJKhg86coFJMt_BkUT_-AOsMR-_RQ1JBIxV6OHWoocfAhHTIgzyiB-YQBo8iga3RXgp0EDqExihlThEGvrPeKiRZSdIyoA9JRdKSLNPLX1oSmglspMYI8vWlfP7f_gUuTxLcgMlvRj8PjztIGqb8eDjZWmdax3qIl9w2ZW-V5DKANho_dnXAFt30Tuj2jdCtjqcaSLaDeTrhmhOam97C56DvjwhdjrQQuh48OpLtyOobN1rIIE3c_QgpMS65Yid0Q1a7iZNPvsYnMNdigICs9yCkD07WQ0CwzDGlUIEwED18-VZgwwYVCF1_cqCMsZP15F0YkCTbpdeQhYG3-_XtOTkZkNA1oSWh2_H_BgilUWCE0jtb1EKY2_q2chgGp-_3rzn6ooBDAwcI7gzBADe9lQohdNJP0mTgkKMOF33Wg1SC0C3IENEwa5E5Tyi9_5obF7OlzjD4qMKoyYuwb3lM4P_mhEd0F2eog3SoziBbbRz6uMc8sOi0j_dL7QOy8e4D-MFb5CGBPzp0yPzoJMbBjT2P93nW47V4IjYGSbVJx2U0DrGaDndIY8qYBnTOOOjRe9YiBFQqBtBHRtiVA2HQgzYBzhigY0f8WpZR9tiPhZ7AF7bHlkHytEX9nkcN0koZzhShVWd6JLSaLGiVL9KkF6_K2NeoM2jGy6cihofGWNS9vb08HNH5qPpst0jhgZO0PDGnpW5JVl7Z94O1xgVojIOLPSxSkPriXHrwQSoFUsdcKgz4jyDziO8KefrZ_HskbNL_lIZRGtGLMnwsTPp3YVe30CklWbkkWbmKTSErgdDKOvNGaHWprEqpY09o9V3q4f31fb18XeaEViOweCrreGhOsXCqKZ7bS8KtJVmZ5ZtF9H2V6J0c4_bj_qXcHZ7325fDrz1Jy-_ffz3C_vn56Tmestq4OMG-yPapPkozeHWeWkONHTtK44CbQQlQyEQsstiFgRvdDJHTBGaiyMQm27AZFvPVgmY5zdbZrCsYy3KGOMdFPefNcr5q5jlSwZbIhNhwPpMFTekiXc3pfJUvaZakacPrOsW64fN5U6ckT7FnUiWRr8S4djbO02Ker7P1cqZYjcqP45rSC3k0Tm5XxA8e6qH1JE-V9MF_uAgyKCw-TeJY7JrQVYCp10197to1LnP6twagP-Y20wKiBMeuNBIkg_-r3CSzwamiC8H6qSQIrVoZuqFOuOk_lDHij6JBHgitxrA9odUl8mNB_wwAAP__n3rHbA">