<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/148383>148383</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Flang OpenMP: compilation error at "-g" when using OMP target variables that are brought in through secondary module
</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 OMP with Flang highlighted this particular bug. When using OpenMP target variables in an openmp pragma - if we add "-g" to the compilation line, then the debugging information has issues and causes a compilation crash.
Reproducing example:
variable.f90:
```
MODULE VARIABLE_MOD
IMPLICIT NONE
INTEGER :: &
NX, NY, NZ
!$omp declare target(NX,NY,NZ)
END MODULE VARIABLE_MOD
```
filter.f90:
```
MODULE filter
USE variable_mod
IMPLICIT NONE
END MODULE
```
break.f90:
```
MODULE break
USE filter_mod
IMPLICIT NONE
CONTAINS
SUBROUTINE crash (field )
REAL :: field(:,:,:)
REAL :: fieldsum
INTEGER :: &
I, J, K
!$omp target map(tofrom: fieldsum)
!$omp teams reduction(+:fieldsum)
!$omp distribute parallel do reduction(+:fieldsum)
DO K = 1, NX
!$omp simd reduction(+:fieldsum)
DO J = 1, NY
fieldsum = fieldsum + ( ( field(1,J,K)))
END DO
END DO
!$omp distribute parallel do reduction(+:fieldsum)
DO J = 1, NY
!$omp simd reduction(+:fieldsum)
DO I = 1, NZ
fieldsum = fieldsum + ( ( field(I,J,1)))
END DO
END DO
!$omp end teams
!$omp end target
END SUBROUTINE crash
END MODULE break
```
Using a recent Flang build:
```
scamp@genx4:/local/home/scamp/TEST$ flang --version
flang version 21.0.0git (https://github.com/llvm/llvm-project d06e9ce1dd69d53a2a2afd06c027ca8af87a7d7e)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /proj/nv/llvm/Linux_x86_64/llvm-5541/bin
Build config: +assertions
scamp@genx4:/local/home/scamp/TEST$ flang -fopenmp -g variable.f90 -c
scamp@genx4:/local/home/scamp/TEST$ flang -fopenmp -g filter.f90 -c
scamp@genx4:/local/home/scamp/TEST$ flang -fopenmp -g break.f90 -c
conflicting debug info for argument
#dbg_declare(ptr %12, !56, !DIExpression(), !53)
!52 = !DILocalVariable(name: "ny", arg: 13, scope: !39, file: !3, line: 5, type: !8)
!56 = !DILocalVariable(name: "ny", arg: 13, scope: !39, file: !3, line: 4, type: !8)
error: failed to create the LLVM module
```
Compiling without "-g" leads to no issues. NVHPC and GCC 14 handle this correctly:
NVHPC:
```
scamp@genx4:/local/home/scamp/TEST$ nvfortran -mp -g variable.f90 -c
scamp@genx4:/local/home/scamp/TEST$ nvfortran -mp -g filter.f90 -c
scamp@genx4:/local/home/scamp/TEST$ nvfortran -mp -g break.f90 -c
scamp@genx4:/local/home/scamp/TEST$
```
GCC:
```
scamp@genx4:/local/home/scamp/TEST$ gfortran -fopenmp -g variable.f90 -c
scamp@genx4:/local/home/scamp/TEST$ gfortran -fopenmp -g filter.f90 -c
scamp@genx4:/local/home/scamp/TEST$ gfortran -fopenmp -g break.f90 -c
scamp@genx4:/local/home/scamp/TEST$
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8V1lz6ygW_jX45ZRdEpJs-cEPipc77pvYqSx3uu9LCgkkMY1ABSjLv58CyUuW7q47SY3LUQQcf-fwHc4CMYZXkrEFSi5QshqRztZKL0xBmnYsHznlZJQr-rK4Y8ZyWcHt9XoJWVEwAfura3jitoaNILKCmle14FVtGQVbcwMt0ZYXnSAa8q6awL9rJqEzDmXfMnl1DZboill4JJqTXDADXAKRoFommxZaTaqGwBh4CU8MCKWAMB5XCGOwCmzNoFBNywWxXEkQXDKEl25e-kXK8q6qnDouS6WbXqwmBrgxHTNAJIWCdMa9voIqNDH1BFCQoSC7Ya1WtCscEHsmTSsYirJh8WD6pJwHKHIzaBoM3yC72q_uL9fwI7vZZheX64er_QoFGWyvri-3y-0d7Pa7tZsA2O7u1t_WN-AwIjfxwQfhaS8MALvf3VZ3f_jnT6cWhwjHqmmBskIQzQZyEU69rBfd_UR4joJsvVvBx7adW4-CrOTCMv23m-tFesPub9dHZz40in602ZPu9-pyzciff6vNS5yU9coPquCdsuV-d5dtd7f96u39xc3-_m67W_ceBoTTkjPhzpWjBW7W2eXBBX4B4dQN8fLsOT864Z246Zrj4l94dHDi1jnuN_f4_sp5Q0Q0pEU4tarUqnmF7rWfiTPSGNCMdoU7uM5cfIGi7K_kKTdW87yzzEUnEYIJoOofAWC1h--AohWE_sD9_grU8Ib-M8TZZ7WH387Q_nizDHDcr5c6DfCFc5n_O7jHQTgevzs1_fc1mjtvq_355HHmq6h5u5nPUbM9Q_v5GWq2AzXh_0LNcQtM0v6YvZ_tE4zncfjt2wjrF8_SzSF-z0P73pcEApoVTNqhmuQdF_SQZ8-EfWVCcVAx-Rz7eNwIVRCB8KZWDUN400vgzd369g7hGEqPNx4_Mm2cE4KsnxnGgMNJMAkqbh15tbWt6WER3lTc1l0-KVTj1IjHw79xq9V_WGGBBlM2L1hI6XROk4hggklJg2kR4FlBUlKmMzKjM9Zzf9cTFmXwnE4fpvG4k39K9STHgsvueVzJzgnVmhEKjaJMONFWGf6MgmwrjXWnkq649rzgjbMC4Y18PFl36ZAeeviDsUkShwhvcu72fuF4hULJklc9zAUxhml3Ps1n-C2Hqj2u4Lwowrj4ItRTLfo6zGPB6SEdLYIXvtHx3YPvHKBUGoiuuoZJf9xxRPPqYaizCKet1YBwEmIXswiHyXR4WW3Xz61mxhyCf36QiI6ZOcE-kr30pbP_x8AewqkkTd9rYCxfEPb4RHu_hZEbmEK1g0QYefCSi-OEG_uuKMog8a3Ry1E6PRkw_b8YEH9sANNa-fNcEi5c56ig0IxY5lu4y8sfVy4UOsHe5IGlb9eco1wLqjp76g0FI9Q4IKmGTm8Cux__ul76hu_bcglhDDWRVLC-US2U1qyw4qVvO7zs-w7k18-bfCyVtppIGH9dYLwD_XxcvIN8Exa_jPiGuW_LL6GzOlr5xbnmQ-DP0_oh7BdTi4JsRBcRnUdzMmKLcJbgKEoTPB3Vi5DMZkk8i_KIRLN5NE_SGJc0KqK8mJa4YCO-wAFOglmIw2mMg-kkiIscB0laTmMakzRGccAawsXE1ZGJ0tXIx9MijNMojUaC5EwYf3XE2CdXlyKS1UgvfOHJu8qgOBDcWHOCsNwKtuirfH8PdOF_fv3yOQHIWUg_nV0dP7o32ppYcJeeXKuuqq27SNrav4NhhZKU6JchkYw6LRa_VucR3vSJBOHNsPfHBf5vAAAA__-VgnuW">