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

    <tr>
        <th>Summary</th>
        <td>
            [flang] Crash in backend with ieee_other rounding mode
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          ashermancinelli
      </td>
    </tr>
</table>

<pre>
    ```
> cat t.f90
use ieee_arithmetic
call ieee_set_rounding_mode(ieee_other)
end
```

```
> nvfortran t.f90 -O2
> gfortran t.f90 -O2
> ngflang t.f90
> ngflang t.f90 -O1
rounding mode is not supported by X86 hardware
UNREACHABLE executed at 
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. 
1.      Code generation
2.      Running pass 'Function Pass Manager' on module 't.f90.ll'.
3.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@_QQmain'
 #0 0x0000564d0116c83b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (
 #1 0x0000564d0116a37c llvm::sys::CleanupOnSignal(unsigned long) (
 #2 0x0000564d010afe98 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f0b58a3e730 __restore_rt (/lib64/libc.so.6+0x3e730)
 #4 0x00007f0b58a8ba6c __pthread_kill_implementation (/lib64/libc.so.6+0x8ba6c)
 #5 0x00007f0b58a3e686 gsignal (/lib64/libc.so.6+0x3e686)
 #6 0x00007f0b58a28833 abort (/lib64/libc.so.6+0x28833)
 #7 0x0000564d010b9f9a (
 #8 0x0000564cffbfacef llvm::X86TargetLowering::LowerSET_ROUNDING(llvm::SDValue, llvm::SelectionDAG&) const X86ISelLowering.cpp:0:0
 #9 0x0000564cffcf8949 llvm::X86TargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const X86ISelLowering.cpp:0:0
#10 0x0000564d02775be0 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) (.part.0) LegalizeDAG.cpp:0:0
#11 0x0000564d02779926 llvm::SelectionDAG::Legalize() (
#12 0x0000564d02876b6e llvm::SelectionDAGISel::CodeGenAndEmitDAG() (
#13 0x0000564d0287a2b5 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (
#14 0x0000564d0287b578 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (
#15 0x0000564d0286b7af llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (
#16 0x0000564d00433ea2 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#17 0x0000564d00b1ca1f llvm::FPPassManager::runOnFunction(llvm::Function&) (
#18 0x0000564d00b1cde1 llvm::FPPassManager::runOnModule(llvm::Module&) (
#19 0x0000564d00b1d6e1 llvm::legacy::PassManagerImpl::run(llvm::Module&) (
#20 0x0000564d01bfbd0a clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (
#21 0x0000564d01d6a237 clang::CodeGenAction::ExecuteAction() (
#22 0x0000564d02178ea5 clang::FrontendAction::Execute() (
#23 0x0000564d020f8c0e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (
#24 0x0000564d0227fd6e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (
#25 0x0000564cffa12337 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (
#26 0x0000564cffa097da ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#27 0x0000564d01ee9769 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#28 0x0000564d010b0364 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (
#29 0x0000564d01ee9d6f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#30 0x0000564d01ea7c50 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (
#31 0x0000564d01ea8cee clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (
#32 0x0000564d01eb1315 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (
#33 0x0000564cffa0eb1b clang_main(int, char**, llvm::ToolContext const&) (
#34 0x0000564cffa217b7 main (
#35 0x00007f0b58a295d0 __libc_start_call_main (/lib64/libc.so.6+0x295d0)
#36 0x00007f0b58a29680 __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x29680)
#37 0x0000564cffa0926e _start (
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 21.0.0git (https://github.com/llvm/llvm-project 083f099a345f02390d00a8196d4ffa36ae71c82f)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: 
Build config: +assertions
clang++: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWU1z2zjS_jX0BWUVCIpfBx9oWfZkKhNn7MzU3Fgg2JTwBgT4AqBj76_fAkhZJCXbma3dvWzKKVv4eJ7G091AA6LG8J0EuAri6yC-uaC93St9Rc0edEsl4xKE4BeVql-uggSPP7gIoi1i1CK7anL3uTeAOACUVHO7b8FyFuCCUSGGZgO21KqXNZe7slU1BCTzHcruQQckD3ABsnbIU5bFx2iL5FOjtNVUDtTo8p6MPbu3OuSuEVTuXm09aUOX92GAi4N9yNmHuEFSWWT6rlPaQo2qF_RXlqA91fUPqiHAxR9fHrbF5pfi-vMWwTOw3g2jFgW4-Pp5WzxukemrlltEUdXvkAaHhKxCe2s7E0RFQG4Dcrvjdt9XK6bagNwK8XT4ddlp9X_AbEBuuTE9mIDcIiprxCUTfQ3I7gExTc0eVZR9t5oyCMgGdRo6rRgYAzUyqtdDs5tJjVGMU2en7iUyTPPOrgJcPFrKvqO6bztnFi7wyq0iXCH_b-ME2YEETS1XMsAFGXseeimdZB01BgUkve0lc0PQV9fwG5V059ybIiWdrL0AN8qrvhIiIKkjj94Ac3LfFHeXQbS9Ke7QJ2ms7gf4RxDg_xqxmwNvQNJgjcvff28pd50BLlBAIozwM8YYx8m6xmGYsCyqkNc6KoKoMC9m-OOr5tJ6Mb4NcmbHQZr-KJWxGmgbkMRJyqUNSI4Cko004YKGRik7R7MRQGXf3ctHvpNUBCTrpU_EGgkld3NQMgPFtIE8Qxvn9wdg6gn0y4DyC5W1cGpno12zMRslLTzbFeuci7H_P-BHI37a4CrOaARphFFZajBWaSi19baQW8GrZD38ZiujVklArvGzHz4ksANbz8GyiiYMlWVn9xpoXX7nQpS87QS0IC0dXfY2up9_RI-XpiZZgnbGL_8DK5MsOeIkcxySZVGEaKU-WKsfd0RJ546p8ianE79lx27WNFVDGTSTYPgrS75RvQP7Wf0AzeVuaPafHrffyof7P77cfPpyN4vBx5s_qeh9Pk8aD8lwU9z5yMwRU9JYt199egRxIDjj-3xmI2uyfJ3_pI333WE7-E8Z6BJqlrgkTeMKsNOYSiVfWtUbJGkLpvPJmp_SfYYdFfwfMBo-frrvFkZ_8UdSMSbeqqParlxUo8OMm-LujHXhwro8J8lb654Z4KPskOQOaZbkJEuTKoE3kJxi4zaiargDWch623LrxV3ARgtYSqr4Q9ihtRDimhrOroVi381Mr9dd3ntx9OiRdL0greI0-5BU9_Je_kbZnks44M9IT_oWrPGcNalS2rzD6jzBXv5N3MmUG6-jCChBb053Z-OE-CzjKdUkKM_gnQnO2faEq5DRcCrI7Vc373BE_21zRpJsSVJD-BMkv_laYK7x2LQgyBcEdTIjEBM3Tqg-td0xrn6ChswLhKqpakwRczXiMA1abq8p-w6yvu9t19uAZJPujWo7LkC7GoVKBmOBMBvhc_W-czKasX8SntZtgA_QzJsP1hYLtNGUYnTKdMonaXVv-BM8QLOR9qvVQbQ5dj81Y-zdcgGPL8ZCG0RbB2FsPfT0kv9_D2W3mOnqn-6H5hbKQxU0mVRDQ3thyxoEWPhgYrQdOU-XtFHS9K0rY4q5h-a1VZ1QdwCfCjxK4pu2Q1F-UGm-N5L5lhumGdB4CnirXcn0KvIU8QRrvs_iJmMY0Hvxcda-t8mX4TrfYkna1MmMb0Q-0j4pRk9ZTsN2IXo8qw9oSCInOgvLobye5FWhNX1x8Rtt2J7qw9FQHBw9ayMb9KR4fUKXzOlwntYUHdayCb8pJeYHd0uF-BOYVWPGn-FeJJrDGGvh2fFVa_4E-nQbJfMqDyBPk9xbPwE9XD9K7QXwvUOM-FB3Q9xd2F3TykY6M48-GIhHf2zCjWpbKutluJ0V-jX5lN9VqJil3XFLeU231wllyZ6fw3D4ULlj3qWmL_C8hLPBrqG0mnJrDt0LOCqEiy-lJ_1uiPd05b1WvFZ9w5SApIK2VU3dJe1VKpId7j-_quqMM7JFyY2jZD3xw7kbz9Dz0MtH2oB4mWn5vt9moZkvw6BOGvS_7MZFTXLWX4t7N9CUxfhN1fxmRE8224OUs51rMdENmKTz5h2O6dBiHD2sbbKw0fxwYX7GAP6u-b-qyrxt-6-q-syNndn-3v726quOcucmf9X_-eWODn130fP3BqhCV1u_QXAz-Xt25pw5bN4S67-46ElCR9HirIEqrAbIw-F2oPGJVIxp8PFJcqRYzylImFYpcuCTMYsnDZLHNUZlKXjlcplqW7qTo3yd9ebbhJs4vE042OULR55kC1i_yDW--_zpelOSFVnFH-An2QQ_XZ7UJAE0II-LG7xDrt1PVCDQ2u0rxSAxasb6BrHRWw3lAmr0g9s9gmfuJK0BhdHawfUG0OUTsgoZAMQn1Ux-YEJPoI27k5JwhVd4x70df--lFeEsanCe02gdN5hEOa4xplmYJ_W6aWiUUEhDlpFm4B2eRtyanrOkTNaXvfwu1Q95Kbjsny93sneD_MOXf1N2NxLUKcOfA1z4kksIqG-4lyXAxXXPhQ_bhu98E7mmxoAebgwnikrl6uwC1ZzupDKWM9QaP3HrtH59sJW780_CmXHReomkmvTTSjiBu96a1eL5_aK-iuo8yukFXIVplMdxmGXpxf6KhOE6TXFMkgRXlIWsypo8p6SKorAJQ3bBrwgmMSbhOkzikKQrnJOwqcI0ZmFN6rgJ1hhaysXKeWOl9O7Cv3hfhSQlZH0haAXC-O8oCKn6XUBIQDYBIc2gCAnimwt95V1Z9TsTrLHgxpojnOVW-C85hhnxzfA4irj0b-cuEH3kHb-TQLOvAy56La7-9Wf7cR1PV-SfAQAA__-7p6iL">