<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/93441>93441</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang][OpenMP] Compilation error when capture-statement described in atomic read construct contains a different type
</td>
</tr>
<tr>
<th>Labels</th>
<td>
openmp,
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ohno-fj
</td>
</tr>
</table>
<pre>
```
Version of flang-new : 19.0.0(8930ba98e01bc66949e482b396f8389d64388359)/AArch64
```
When `capture-statement` described in `atomic read` construct contains a different `type`, the compilation terminates abnormally.
Compilation ends normally in the following cases:
- Do not specify the compilation option (`-fopenmp`)
The following are the test program, Flang-new, Gfortran and ifort compilation/execution result.
OMP_3_O_007_4_atm_type_006_re_22.f90:
```fortran
subroutine sub2()
real(kind=4) :: s_v_r2
complex(kind=4) :: s_x_c2
s_v_r2 = 0.0
s_x_c2 = (1.0,2.0)
!$omp atomic read
s_v_r2 = s_x_c2
!$omp end atomic
write(6,*) "s_v_r2 = ", s_v_r2
end subroutine sub2
program main
call sub2()
end program
```
```
$ flang-new -fopenmp OMP_3_O_007_4_atm_type_006_re_22.f90
flang-new: /lustre/home/ohno/LLVM_20240523/llvm-project/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp:5894: llvm::OpenMPIRBuilder::InsertPointTy llvm::OpenMPIRBuilder::createAtomicRead(const llvm::OpenMPIRBuilder::LocationDescription&, llvm::OpenMPIRBuilder::AtomicOpValue&, llvm::OpenMPIRBuilder::AtomicOpValue&, llvm::AtomicOrdering): Assertion `(XElemTy->isFloatingPointTy() || XElemTy->isIntegerTy() || XElemTy->isPointerTy()) && "OMP atomic read expected a scalar type"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /lustre/home/ohno/LLVM_20240523/release/bin/flang-new -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu generic -target-feature +outline-atomics -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon -fopenmp -resource-dir /lustre/home/ohno/LLVM_20240523/release/bin/.. -mframe-pointer=non-leaf -o /tmp/OMP_3_O_007_4_atm_type_006_re_22-4aae60.o -x f95-cpp-input OMP_3_O_007_4_atm_type_006_re_22.f90
#0 0x0000000004251280 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x4251280)
#1 0x000000000424f188 llvm::sys::RunSignalHandlers() (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x424f188)
#2 0x000000000424f30c SignalHandler(int) Signals.cpp:0:0
#3 0x000040002da507a0 (linux-vdso.so.1+0x7a0)
#4 0x000040002def6274 raise (/lib64/libc.so.6+0x36274)
#5 0x000040002dee0a2c abort (/lib64/libc.so.6+0x20a2c)
#6 0x000040002deefba0 __assert_fail_base (/lib64/libc.so.6+0x2fba0)
#7 0x000040002deefc18 __assert_perror_fail (/lib64/libc.so.6+0x2fc18)
#8 0x000000000728bf20 llvm::OpenMPIRBuilder::emitTaskwaitImpl(llvm::OpenMPIRBuilder::LocationDescription const&) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x728bf20)
#9 0x00000000059d86cc convertHostOrTargetOperation(mlir::Operation*, llvm::IRBuilderBase&, mlir::LLVM::ModuleTranslation&) OpenMPToLLVMIRTranslation.cpp:0:0
#10 0x00000000059d9a5c (anonymous namespace)::OpenMPDialectLLVMIRTranslationInterface::convertOperation(mlir::Operation*, llvm::IRBuilderBase&, mlir::LLVM::ModuleTranslation&) const OpenMPToLLVMIRTranslation.cpp:0:0
#11 0x0000000006047370 mlir::LLVM::ModuleTranslation::convertOperation(mlir::Operation&, llvm::IRBuilderBase&, bool) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x6047370)
#12 0x00000000060509ec mlir::LLVM::ModuleTranslation::convertBlockImpl(mlir::Block&, bool, llvm::IRBuilderBase&, bool) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x60509ec)
#13 0x00000000060516a0 mlir::LLVM::ModuleTranslation::convertOneFunction(mlir::LLVM::LLVMFuncOp) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x60516a0)
#14 0x000000000605200c mlir::LLVM::ModuleTranslation::convertFunctions() (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x605200c)
#15 0x00000000060569d8 mlir::translateModuleToLLVMIR(mlir::Operation*, llvm::LLVMContext&, llvm::StringRef) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x60569d8)
#16 0x00000000048c3098 Fortran::frontend::CodeGenAction::generateLLVMIR() (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x48c3098)
#17 0x00000000048c53c4 Fortran::frontend::CodeGenAction::executeAction() (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x48c53c4)
#18 0x0000000004285cdc Fortran::frontend::FrontendAction::execute() (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x4285cdc)
#19 0x000000000427ab04 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x427ab04)
#20 0x000000000428b298 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x428b298)
#21 0x0000000003e886d0 fc1_main(llvm::ArrayRef<char const*>, char const*) (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x3e886d0)
#22 0x0000000003dfc138 main (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x3dfc138)
#23 0x000040002dee4384 __libc_start_main (/lib64/libc.so.6+0x24384)
#24 0x0000000003e87554 _start (/lustre/home/ohno/LLVM_20240523/release/bin/flang-new+0x3e87554)
flang-new: error: unable to execute command: Aborted (core dumped)
flang-new: error: flang frontend command failed due to signal (use -v to see invocation)
flang-new version 19.0.0git (https://github.com/llvm/llvm-project.git 8930ba98e01bc66949e482b396f8389d64388359)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /lustre/home/ohno/LLVM_20240523/release/bin
Build config: +assertions
flang-new: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
flang-new: note: diagnostic msg: /tmp/OMP_3_O_007_4_atm_type_006_re_22-0ff303
flang-new: note: diagnostic msg: /tmp/OMP_3_O_007_4_atm_type_006_re_22-0ff303.sh
flang-new: note: diagnostic msg:
********************
$
```
```
$ cat /tmp/OMP_3_O_007_4_atm_type_006_re_22-0ff303
#line "./OMP_3_O_007_4_atm_type_006_re_22.f90" 1
subroutine sub2()
real(kind=4) :: s_v_r2
complex(kind=4) :: s_x_c2
s_v_r2 = 0.0
s_x_c2 =(1.0,2.0)
!$omp atomic read
s_v_r2 = s_x_c2
!$omp end atomic
write(6,*) "s_v_r2 = ", s_v_r2
end subroutine sub2
program main
call sub2()
end program
```
```
$ cat /tmp/OMP_3_O_007_4_atm_type_006_re_22-0ff303.sh
# Crash reproducer for clang version 19.0.0git (https://github.com/llvm/llvm-project.git 8930ba98e01bc66949e482b396f8389d64388359)
# Driver args: "-fopenmp" "OMP_3_O_007_4_atm_type_006_re_22.f90"
# Original command: "/lustre/home/ohno/LLVM_20240523/release/bin/flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-fopenmp" "-resource-dir" "/lustre/home/ohno/LLVM_20240523/release/bin/.." "-mframe-pointer=non-leaf" "-o" "/tmp/OMP_3_O_007_4_atm_type_006_re_22-4aae60.o" "-x" "f95-cpp-input" "OMP_3_O_007_4_atm_type_006_re_22.f90"
"/lustre/home/ohno/LLVM_20240523/release/bin/flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-fopenmp" "-mframe-pointer=non-leaf" "-x" "f95-cpp-input" "OMP_3_O_007_4_atm_type_006_re_22-0ff303"
$
```
```
$ gfortran -fopenmp OMP_3_O_007_4_atm_type_006_re_22.f90
s_v_r2 = 1.00000000
$
```
```
$ ifort -qopenmp -diag-disable=10448 OMP_3_O_007_4_atm_type_006_re_22.f90
s_v_r2 = 1.000000
$
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltzozgW_jXkRYVLCIzhIQ9OHHenKr1JpbMz--YS4uBoGiRWErn8-y0JsMFxx4nbvVNbtameMYijo-9cdTmiWvO1ADj3phfedHFGG_Mo1bl8FNIv_jrLZP567sW4-4cXHp7_AUpzKZAsUFFSsfYFPCMvnKMgneAJ9kiSpCHOaJoADjIWx2mUQpSQLEzjIgmTNI-jMEnCaeqR1CPL-Vyxxzhqme-M1f7_z0cQyIsxo7VpFPjaUAMVCOPFGOWgmeIZ5Ig7ImpkxRlSQHP7mUmhjWqYsU-GcqERRTkvClAgjO1gXmuwA5JLZB4BMVnVvKTGimhAVVxQAxrRTEhV0bJ8nQyhXQ6oQeQa9VQWjWVXyLKUz1ysEaMatBd2HX20kEhIg3QNjBevb8aWtfvxSOLF2C9kDaKqHc50COBhNAZV4BgZ0AbVSq4Vraxgy95Q9uVLIZVRVCAqcsTty3BgjyzhBVjjRlegm9KMJL79drcKV7crjGeraEVNtbIKXGEcrxSsCJkUKd5IuTFnN2TbqptMycZwAUg3GbEi9kIha7jSI8kPLnIvXEQeSRFC1r-si-nV00qRntSiLuFlh3pD-rJiPWnbD3nhAlkX7fq3JK7VI0lgffeSTAYaJoFHIlnVaOhUXechz-FY204g8q7jps-z4gY8ksQeufTI3MElZMDJI8SaaCinZbOrsYE9OiujinKxUQwtyzeqtXx6l_h5rO02kmgQ5b0bog85gWOw6Wxt4pFl2WijwCPLR1nZH5tpPLK8ufnj24pgEuEpCS1Z-VT5tZJ_ATPdq_3hmUeWSyWFAZF7ZHlbg_h2Zx--3V3fXzS8zEFNWF174XyapJEd1PV1PtFSb-jaxmuhQZk7yYV5eD1EzBRQA3Nn1HvrDCRxCeZQvxvJXHAtXLKq2zizTnCoYzvUbf0HLRs4RZfuq8pBcbG2zhHO0VxbHbh0YxNM8q-rEqqHV98Lr7helpIaLtadilqXQt7s0ptdohHltTCwBvUujeOypWkjIPZIbF3_9tvdMNQQvNTADOSIIs1oSRVyydrGyAwVlJeQd7np7uZq_v3K-nzFDaIoa9ZIQW1zm5Ho0ZjapV6y9Mhyzc1jk02YrAaeNfY3rnUD2iPLNkcKVjZ5m1mZovoRZZT9MIoy6Ib_bij7gfKmqjepD0-Q-7vr4pOqdWPnLP25QFBQAtWWIOM2Nw-DkQXIN4rXJSBK3STqN-KHkM_CL7loXvy1aJAPFTe-zP5CfqWg7BzRr2QOJao5Q37NmV_CE5SItC9c-zUH5Buq1mB8VjdoDQKUJe7aCqB2KkYeuZCNKbkAvzWc3kfylNB9zUXtU1U9Jfu-CZBim298BVo2ioGfc_UL2ptMkF8Vilbg160jeuFCSOGXQAvkS8vaVHWbUN7NcH5EKcR4IpH_gop06rO69rmoG_OJ5Ig8EmKEX3D_F5FpQBI8iFf9qtuHO8WFcX72YB3PI8mWSNHnlbQKsbO9C3guTBtayQlczSMX-KWDtp2pPRIGY-xRESTJPuz3jfjO14KWX6nIS1C6TxCnhOdGH8Eju_BCzNAIiEeSTlNts-7mDuz-2zAKO0YRxpjkdIpnFFvwbZQ95VpOtJwEDsiMjnUUjfpCEZNZhBTlGnrxeRZH7S-zbGLHJrR0I0bTMSPAlDBEM5vi3mNELN2IUbzDqMgoRqsVdZPAyqbVVUYPwCO204jrbJcrC5It1xqUksoxP8CXBWMjJkMjzkiSFQQfmgJtynug-scz5ea6qstRsHx0gm63Di6eTuqpnQwjIdOhkNM0T2LG7PhPoMxXqc2tenAZ8rYG1a3Sk6rkaiNR3zofz_YbKS8cHpcatv0s7vbpm8ybEh4UFbrfBTixW109SEt5fT_4_jZObDrAO2KkdMqs6qiQ4rWSjUaCVqBrl7_SoTkWnJbAzJtx7JJCFZa-XX-1Kvlvq6Fd431SGaPkGONoFs7wB0f9lKzxYVkzKcsTe3En0GCvFAZkLPEUp8COkPiilOxHF7bb3q51JM_fIrUTaiR1uCN1ENOj7Cxg2Qj2xtLb_vbJktzWp5fKgh5JFe1IRTA-xpa9SL9hxu9AjVBPd1DHaZ4MUJsOJXSgu1D-YBaxxJd26_li3kTdd2O3U_dQnF5IK8NIyHi0rElYiNMELbsDFoem6HfI7u1S5vAFxJxtreOW89TARv5Tr8ZaVCPYsx3Y05BFn4TdHkzBvI-S06O2oEaok_EaMpmynL2Huj-c2AP7dyx6HZ4R4HQMeEYzfEDNVc1LUNdCGyr6iXZX0x-X-OTrpU6GoZBkZ9OUZOT9EOjE2cr61K333hftjW76I7tTWtBiHwk3WjiEkCRxjlHBgpU74hsuZedK0VebdMJL9khVv2Kde-GVTU_jttMC73CNgI_m_zAvWBAm7lzypAO3fEcDhzt7jyhMIrRa2a3FShuqzGqIYv_Gw_YZMY12zDCbTiPUsjuxIi3nzdCjA1O3a7IPjaBZCchI1LkyYrKqqHNUNLebQMiRO41U4M6hID_A0bWi3t97dt2pGsobN5h2u2LLuNGA_CfXBoD4IIB2R0FPXYGorQetuVPX547gJrbXZ8pIbS3E7ZGscD89DuuLJu540Z2BWfJaav7SfnKhXpaQL9yC4OizJsfMrUltBBZ83TK7oP1Rq95jHCGNzb8o53QtpDacoUqvt9UU8gv_Bmf83WHp_OFhfvkVPXy9Qsvbm5vbP6__8QUtr2-uvqOHW9d88c8v6P7q7vb-YYPhTkGtJAOtIUftmZxHEm2zi3UfqrVknFpvVI1A7WZ6Q6AAuQNIyBE1G5YfU8EnjuZwUYQ4_K3MJ_rxCPudyorkvWrpngoOo-ZI9XkkLLkA5BEy-UBfd7RJCAo2FS-E3hSvhuW-PdW-vaU--_fxcl877N6aX_ulr_sdUfY7svJ3ZPEPHaj-tZz31QCdxvbVAdHRhcBj3GgTKB4J0aUrnrgMkjcMFCqkQsxNRH_bpGFxLRR_AoWoWnfVGbIpuBPSFaY-4vdbjreKr7mdOgfTtDPvCRYNpAXIgv6xrQF1bz-f-jrqvh7Uv7-pCnUfas56kk2FqGsgww9ttWiDZVMz6lq6ytHO967S07W-rSIdIn9K6CGSvrp0iE6AXcWQPVYfVZ02HY6vPW00_rMKVE8gt4N9shrVc3jpHkaVqWOc-f9e-z_ntQfd61eco18dbJPdJ9ci6_720RGXSYYzbzDp92ZHAmlvPvn_7kvMdtHm51zbjZYXLgIcRckvYnsf2Vl-HuZpmNIzOA9mQTxLgxSTs8dzQnGcBtM0j-KkCMIwwQVOUsizGcUkDvAZP-9ibobjMCFkwoJghkOYJlmcpTQMvQhDRXk5sfPjRKr1mbvRcJ6GURSclTSDUrsrf4RsfMetSoiLWPs2XZypcze9Zs1aexEuuTZ6y9BwU7prg-5umTddeNOL7jrOdIFG9-LslhM9P4JAb27wja_vDe9-HLi4Z81w1qjy_Pi7Ha0yns7JfwIAAP__SV8lwg">