<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/87955>87955</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang][OpenMP] Compilation error of using a reduction clause (min) with a variable (kind=16)
</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(cbcdf126ccc774c063b5d5140c1393ff5305dded)/AArch64
```
A compilation error occurs when using a `reduction` clause (`min`) with a variable (`kind=16`).
The same error occurs when `max` intrinsic function is used.
Compilation terminates normally in the following cases:
- change `kind=16` to `kind=8`
- remove `reduction` clause (`min`)
- compile without `-fopenmp` option
The following are the test program, Flang-new, Gfortran and ifort compilation/execution result.
snfmm235_3.f90:
```fortran
program main
real(kind=16) r3/1/
!$omp parallel reduction(min:r3)
r3=min(r3,1.0_16)
write(6,*) "r3 = ", r3
if (r3 < 1.0_16) then
r3 = 1.0_16
end if
!$omp end parallel
write(6,*) "pass"
end program main
```
```
$ flang-new -fopenmp snfmm235_3.f90
LLVM ERROR: Cannot select: t7: f128 = fminimum contract t4, t6
t4: f128,ch = load<(dereferenceable load (s128) from @_QFEr3)> t0, t41, undef:i64
t41: i64 = AArch64ISD::ADDlow t40, TargetGlobalAddress:i64<ptr @_QFEr3> 0 [TF=34]
t40: i64 = AArch64ISD::ADRP TargetGlobalAddress:i64<ptr @_QFEr3> 0 [TF=1]
t38: i64 = TargetGlobalAddress<ptr @_QFEr3> 0 [TF=1]
t39: i64 = TargetGlobalAddress<ptr @_QFEr3> 0 [TF=34]
t3: i64 = undef
t6: f128,ch = load<(dereferenceable load (s128) from %ir.1)> t0, FrameIndex:i64<1>, undef:i64
t5: i64 = FrameIndex<1>
t3: i64 = undef
In function: _QQmain..omp_par
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_20240321/release/bin/flang-new -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -fopenmp -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 -mframe-pointer=non-leaf -o /tmp/snfmm235_3-4e13f7.o -x f95-cpp-input snfmm235_3.f90
1. Running pass 'Function Pass Manager' on module 'FIRModule'.
2. Running pass 'AArch64 Instruction Selection' on function '@_QQmain..omp_par'
#0 0x00000000041f9f00 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x41f9f00)
#1 0x00000000041f7e08 llvm::sys::RunSignalHandlers() (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x41f7e08)
#2 0x00000000041f7f8c SignalHandler(int) Signals.cpp:0:0
#3 0x000040001c8a07a0 (linux-vdso.so.1+0x7a0)
#4 0x000040001cd46274 raise (/lib64/libc.so.6+0x36274)
#5 0x000040001cd30a2c abort (/lib64/libc.so.6+0x20a2c)
#6 0x0000000004182d58 llvm::report_fatal_error(llvm::StringRef, bool) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x4182d58)
#7 0x0000000004676b10 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x4676b10)
#8 0x000000000467a91c llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x467a91c)
#9 0x0000000003f9be2c (anonymous namespace)::AArch64DAGToDAGISel::Select(llvm::SDNode*) AArch64ISelDAGToDAG.cpp:0:0
#10 0x0000000004674eac llvm::SelectionDAGISel::DoInstructionSelection() (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x4674eac)
#11 0x0000000004681830 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x4681830)
#12 0x000000000468452c llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x468452c)
#13 0x00000000046859b0 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.1268) SelectionDAGISel.cpp:0:0
#14 0x00000000068cbda0 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.78) MachineFunctionPass.cpp:0:0
#15 0x0000000007f91e90 llvm::FPPassManager::runOnFunction(llvm::Function&) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x7f91e90)
#16 0x0000000007f920c8 llvm::FPPassManager::runOnModule(llvm::Module&) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x7f920c8)
#17 0x0000000007f92bb4 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x7f92bb4)
#18 0x000000000485663c Fortran::frontend::CodeGenAction::executeAction() (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x485663c)
#19 0x000000000422f164 Fortran::frontend::FrontendAction::execute() (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x422f164)
#20 0x00000000042238dc Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x42238dc)
#21 0x0000000004233de0 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x4233de0)
#22 0x0000000003e45678 fc1_main(llvm::ArrayRef<char const*>, char const*) (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x3e45678)
#23 0x0000000003dccd10 main (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x3dccd10)
#24 0x000040001cd34384 __libc_start_main (/lib64/libc.so.6+0x24384)
#25 0x0000000003e444fc _start (/lustre/home/ohno/LLVM_20240321/release/bin/flang-new+0x3e444fc)
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 cbcdf126ccc774c063b5d5140c1393ff5305dded)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /lustre/home/ohno/LLVM_20240321/release/bin
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/snfmm235_3-027b31
flang-new: note: diagnostic msg: /tmp/snfmm235_3-027b31.sh
flang-new: note: diagnostic msg:
********************
$
```
```
$ cat /tmp/snfmm235_3-027b31
#line "./snfmm235_3.f90" 1
program main
real(kind=16) r3/1/
!$omp parallel reduction(min:r3)
r3=min(r3,1.0_16)
write(6,*) "r3 = ", r3
if(r3 < 1.0_16) then
r3 = 1.0_16
end if
!$omp end parallel
write(6,*) "pass"
end program main
$
```
```
$ cat /tmp/snfmm235_3-027b31.sh
# Crash reproducer for clang version 19.0.0git (https://github.com/llvm/llvm-project.git cbcdf126ccc774c063b5d5140c1393ff5305dded)
# Driver args: "-fopenmp" "snfmm235_3.f90"
# Original command: "/lustre/home/ohno/LLVM_20240321/release/bin/flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-fopenmp" "-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" "-mframe-pointer=non-leaf" "-o" "/tmp/snfmm235_3-4e13f7.o" "-x" "f95-cpp-input" "snfmm235_3.f90"
"/lustre/home/ohno/LLVM_20240321/release/bin/flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-fopenmp" "-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" "-mframe-pointer=non-leaf" "-x" "f95-cpp-input" "snfmm235_3-027b31"
$
```
```
$ export OMP_NUM_THREADS=2; gfortran -fopenmp snfmm235_3.f90; ./a.out
r3 = 1.00000000000000000000000000000000000
r3 = 1.00000000000000000000000000000000000
pass
$
```
```
$ export OMP_NUM_THREADS=2; ifort -qopenmp -diag-disable=10448 snfmm235_3.f90; ./a.out
r3 = 1.00000000000000000000000000000000000
r3 = 1.00000000000000000000000000000000000
pass
$
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltv47iS_jXMS0GGRF0sP-TBieNMgO5JJsk5i30yKIqyOS2RWpJK0v9-QepiyXEu3e3eARbH6I4tXqq-KharSiwSrflWMHaO4gsUr85IY3ZSncudkF7x91km8-_nKPG7f_4K-ct_M6W5FCALKEoitp5gz4DCJQSLmT_zEU5pRvMiwAmldD6PqJ-EWZzHQeTTIFyERRGHfpznLEd4gfB6uVR0l0Qt8QNeS6CyqnlJjOXIlJIKJKWN0vC8YwIazcUWCKDEVyxvqB2GEh9oSRrNAOEUJX7FbRvCC3jmZgcEnojiJCv7_m9c5ChcBUk7atayftwx0KRiR7hamuTF8uHCKC40p1A0wnEHrqHRLO-otH8vR0IYpiouiGEahFQVKcvvwAWYHYNClqV8thJRoplGYTfdA7ojYsvgACwYOWpKB615oFgln9gn1TIwcSiZ05JsjJ3tFbJmoqrtZFk7MiOxHieYiWJOCsO0gVrJrSIVwpew7o3EPlwXUhlFBBCRA7cP4xVGeM1eGG2cohTTTWkmetSiqCocxptwViz8QT-D0XTE29YOAlSEdy2gGCkRTvc6xAtQIcLrAOF1RwsHCEeyqqEmipQlK2GvQpxapYVLO2fR0wxRuLLNOLXNl8HM3zjKXT88K24YwmmC8CXCS8sTYaxCQOHK_rJqUWE_mhfgKAEKL2GgZRXbC2E_3eyuv2tnTqWHYtjWXpT3IdVEa4vHDXLTXmnwYHseb8TRyDH0FgQHa-eGfvny769wdX9_e2_9xyURQhrQrGTU2AYzt3-LAKdO2qLigldNBVQKowg1YCKrPDNowET9BIQv6c7NKiXJUXiJcJozxQqmmKDM7X7bY5Wt3fgFFEpWgCJ_89f6ql3h8AqM71hEgf1qRM4KFC55767sWti-cAk8iRy_zp3dPKysfYbL5WpVymcwkSP0SNSWmetSZqRc5rliWnf0wsvaqBH78Ap8QPHF4xqFqzBC8Wq0_o7cu0zv736WV7BnZcJ0zOUowU-SalGHi1-id6AGE46ptYvTW0Ly65aAY65mwcQO1opU7Ebk7GXQZIDCq7dtIx4jHM9u530syo0YQosdsfnrL7sbZzNZ1ZuaqHbQ3Zer5cMV6CaruAECWbMFxWrrXY2EnTG1CyZ4jfB6y82uyWZUVgivy_Kp__JqJf-2Gw-vudYN0wivWy8taNnkrW-niugdZIR-sxuQdc75wRD6DfKmqgeX7M_aFb_rXAhR26ZiwlgcYDk22iiG8HonK_tlEw6E19YhbLCPIz-0DmytWMmItgMy62HXY79CA_CM4nXJgBBn_l4jvgn5LLySi-bF24oGPFZx48ns770j8irFSkldwPEqmbMSak7Bqzn1SvbESsDtA9dezRl4xpmpR-sGtkwwZQd3bQUjplE2ol7IxpRcMI8YWXGqjw15Ssmx5qL2iKqe0mN9gkkBXlVYy_FqyYVhCoUrIYVXMlKAJ602TVUjvN57WC9iQVjMZxK8FygWsUfr2uOibsxRNxx0i3XfCGEjuQ0EgPB83ec0d7bhKxFkyxTCc5ACKpk3LoOar2_uv7oHhOedQeA3CHZuCm6ENqqNqfDg3L2Lro7wkEghPHdu4MDg8bzbNQiHPvgvfv-JgmJR-D44m3ZeUH_X7Y87xYVxVvpozRbhdD9IkeeNtMZosxUbEG1S10bE9ASGivCF_9JB2ycFCIfBAfY589Nj2O8b8cC3gpR_EJGXTGnU-qjTwrPcJ_DwIbwipTABgnDaaapt1jNaWwfgu_8DobAjFPm-H9CU-HPiW_DtHn3KtZxpad3shf8yJ1MdRZO5eZTgeQSK8C6HxeuSZ0nUflNLJnFkQjtuQiieEgp9gimQzDrI9whhO25CKJmqJcV5PF611uluCmJIuXEvDhNbe7BvC9t7Vlgzy6QsT76QDtAE8XyCOJknWTDeI8P2Wy2vbx5Y2ba2qdh_M9N2T4VY_SlzNqSNpwPfYpuATw_Ak0VAPwTftl7KnF3KqnJp-1H0Nma7t9_cvl8pm1Zqc9jzG5xBK8ZEzsVYzrBYZAxTy5MIKb5XstEgSMV07ZzXosvxWme6Wl4_yiPyv71mQ7LIyn7y661rPZR_oP2IkY-1v5Ij7z5y7id3Wi2eQY0W8NSnJmmQhp-wdZmzayaWIr-quFktr38HVgdlghUfYI1i_FnTXpblBdGcXpSSftOThR5CdmfMyeklsUAnkoQHksSL7GOtq0bciq-E7rhgPeiJJK_6elFmNVFmFuDErdIh9eOWHI0hJinNcjKGeMDLpjsjlEfhvYVr7lAdIXgcWDwGNi8WAVuMga3v7NQ-8_phSKda9Q7YZNWTA-TYp-knkPep4nilu6bfgNqCmqCeH6LOsmiEumRbQr93SeMe_01V7832_wx7lkUT7NNgmMZJElJYd0deDk2hpDBM5FPH1r88onDZnq6x5e_yyS2oCepJaIswLoIkeg_1uns6Avs3AG7xjAFj_wBwmOYfqNkdmyob9oig7LimPy_x6X12K8NEyGmkxGGYM_89ITtx9rI-dW_Q74v2Sjenzxpb7BPhJqE1ZFGczFMoaLBxB5nj7btUiny3-Xh4OU0B2zOdg7TwpMA7XBPgk0ga5pTmge9OX0_KuKU7YXzwohVGYRrBZmPfhjbaEGU2YxTH35XsnAnR-GAZoqig0JI7sSIt5YH1vjdctsUb-6MR7qTPSOhMGaisKuIMFZb2TZC5I0AqFXNHWW156h2KrhV6e-_JQUF4yXLIG8dMu1djS7jRDLwn18YY8NEGOuQCT12FrS2obblT14-d4s3srB-pw7UFHXf-ZIV780Str_woRnJwp2d2eC01f-kPLLUhZcnyFVe_ctj3WvNCGutcIedkK6Q2nEKlt_sqEP6Ff6NyRneYunx8XF7-AY9_XMH69suX2_-6-fMa1jdfrh7g8dY1X_zrGu6v7m7vHwcMd4rVSlKmNctBy0a5wyZtXYe1DaK1pJxYU1ONAE0Vr80wQDFw55IsB2IGkp9TwdFTQB_PszA4EZmZ3v3EmpxqZfDx-vCbBShKzIcqQTgsuWCAMJ5NRrmTUYwhGNcujpQT21LcP1FTtJ8fqyvaDy8-UVo8Xlu0n0_XFz9RXtxTPFJkPO1iD4aLcAiXroDhdmneUKagkAqo8-T_mNe1uFaKPzEFRG27CgkeSu8Y28dX1rmfe6v4ltsoM4pobv1PEF9xC4UG_c-24tI9vR0lutF99WUgNJHpdSWm66g57YcMVZmuAY872grNAG2o03QtXbXmoL-rrnStrys3Hw1_SslHQ_qKzkfjBLMOoNPFWzWefoAc5r1d7-nHvnQ_JrWf9y3pPybz_89kPmcGfVDc-5Qf9L_sxZWab7_ebf7819fN4x_3V8vVAwpXGIUXsO2v_Lx1FSS8ABt_yUw2ZgiAfQz6-PPzU1xE-h0itxebvP_pK842O_Jyru0riE0S_ChKP68FgH9eEWf5eZgvwgU5Y-fBPMBx5C_S-Gx3nkUBLrI8JmmaU7ooCI6SOctivPAXFAfsjJ87txH5qR9EiyieFUnGaDynWR5kaUITFPmsIryc2Ug6k2p75u4fnKfzRRyflSRjpXbXEzEeXIFLLLBzOvYpXp2pcxeIs2arUeSXXBu9J2i4Kd0VR3cXDcUrFF_c1kx8vUPxCi5fXzEshpuFQ6I2ujznMrOjtwnHWeBZo8rzn7974cT_3wAAAP__wDkDpw">