<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/101984>101984</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86][m32][_Float128] Float128 + m32 + frounding-math produce ICE
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhangtianhao6
</td>
</tr>
</table>
<pre>
t.c
```
typedef __float128 _Float128;
typedef unsigned long int mp_limb_t;
typedef long int mp_size_t;
__extension__ typedef long long int intmax_t;
static _Float128
round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
mp_limb_t round_limb, mp_size_t round_bit, int more_bits)
{
# 309 "../stdlib/strtod_l.c"
_Float128 force_underflow = 3.36210314311209350626267781732175260e-4932q * 3.36210314311209350626267781732175260e-4932q;
do { if (sizeof (force_underflow) <= sizeof (double) || __builtin_types_compatible_p (__typeof (force_underflow), _Float128)) __asm __volatile ("" : : "x" (force_underflow)); else __asm __volatile ("" : : "f" (force_underflow)); } while (0);
# 357 "../stdlib/strtod_l.c"
}
# 506 "../stdlib/strtod_l.c"
_Float128
____STRTOF_INTERNAL (const char *nptr, char **endptr, int group)
{
mp_limb_t retval[(((113) + ((32) - 1)) / (32))];
int negative;
intmax_t exponent;
return round_and_return (retval, exponent, negative, 0, 0, 0);
}
```
```
clang -m32 -frounding-math
```
ICE
```
fatal error: error in backend: Do not know how to soften this operator's operand!
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. Program arguments: /opt/compiler-explorer/clang-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -m32 -frounding-math <source>
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module '<source>'.
4. Running pass 'X86 DAG->DAG Instruction Selection' on function '@round_and_return'
#0 0x000000000382fe38 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+0x382fe38)
#1 0x000000000382dfa4 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+0x382dfa4)
#2 0x0000000003778bb3 llvm::CrashRecoveryContext::HandleExit(int) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3778bb3)
#3 0x000000000382577e llvm::sys::Process::Exit(int, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x382577e)
#4 0x0000000000c9ab56 (/opt/compiler-explorer/clang-trunk/bin/clang+0xc9ab56)
#5 0x0000000003782c13 llvm::report_fatal_error(llvm::Twine const&, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3782c13)
#6 0x0000000003782d78 (/opt/compiler-explorer/clang-trunk/bin/clang+0x3782d78)
#7 0x0000000004b34b60 llvm::DAGTypeLegalizer::SoftenFloatRes_SELECT(llvm::SDNode*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4b34b60)
#8 0x0000000004a9cfeb llvm::DAGTypeLegalizer::run() (/opt/compiler-explorer/clang-trunk/bin/clang+0x4a9cfeb)
#9 0x0000000004a9d441 llvm::SelectionDAG::LegalizeTypes() (/opt/compiler-explorer/clang-trunk/bin/clang+0x4a9d441)
#10 0x0000000004a18e72 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-trunk/bin/clang+0x4a18e72)
#11 0x0000000004a1be62 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4a1be62)
#12 0x0000000004a1d6cf llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4a1d6cf)
#13 0x0000000004a0cda1 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4a0cda1)
#14 0x0000000002c768fb llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#15 0x00000000031c3462 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x31c3462)
#16 0x00000000031c3721 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x31c3721)
#17 0x00000000031c29ab llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x31c29ab)
#18 0x0000000003acae81 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, 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*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3acae81)
#19 0x0000000004107624 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4107624)
#20 0x00000000060a0fdc clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x60a0fdc)
#21 0x0000000004107db5 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+0x4107db5)
#22 0x00000000043adbd1 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+0x43adbd1)
#23 0x000000000433097b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x433097b)
#24 0x0000000004494ba3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4494ba3)
#25 0x0000000000c9ca9c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+0xc9ca9c)
#26 0x0000000000c969dd ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#27 0x00000000041510c9 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 0x0000000003778ab3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3778ab3)
#29 0x00000000041512e9 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 0x0000000004116e37 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x4116e37)
#31 0x00000000041177ed clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x41177ed)
#32 0x000000000412123c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x412123c)
#33 0x0000000000c99d81 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+0xc99d81)
#34 0x0000000000b6ffc4 main (/opt/compiler-explorer/clang-trunk/bin/clang+0xb6ffc4)
#35 0x00007e0ab0429d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#36 0x00007e0ab0429e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#37 0x0000000000c9647e _start (/opt/compiler-explorer/clang-trunk/bin/clang+0xc9647e)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Compiler returned: 70
```
This error occurs when compiling m32 glibc. GCC is ok.
https://godbolt.org/z/9WqanPhv6
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkml9zo7qSwD8NeVHZBQLz5yEPjh3PnVNzzqTi7O59o4RobO2AxJFE4pxPvyWBbUScyZwb392HnUomoD_dP7VarRZAlGI7DnDrLe68xfqGdHov5O1fe8J3mhG-JyK-KUT5eqvn1PPXnr_0Yn_4sbf6tYUSKpTnVS2IDnCK8s1w5YV3bqOOW3UlqgXfIcY1atq8Zk2R6zdtx00U-wtGTfIcDhq4YoLnOXI6nHoxrhtyGHVSmmhGR3C2VIqOlznhZS5Bd5IjD6cnJuThpQT9TGoPr04SERxawYHroRBx2BHNnsHDq14oQug8MNSrMDemw2k0Q3nBTnIaIcHcKw9ng62TAd7DIQr9DHkYz-ce3ihd1qywF1KLMq_n1MP4pP00SFQJSSHveAmyqsUL8sI1CudhjAM_DKIwCLCfhQs_xjGOkyQNkhAHyQLHPsyiLMR_GhP8rQ4neyOESoG85A6xyljVjFrYqwmThzPkhStDdm5Tiq6owVYlKy9ZoTwvOlZrxnMz3yqnommJZkUNeWs65Lb8PQXGxOeZN_cZynOiGpTnz6ImmtVgehojYoy8cNn_Ynyw95dlZl54h6BW8Iuyqo9keckaveyH_n5fOHKARfJLDuAl63OnhR__UqfJusjzPN8-PT593-Rf_3i6f_xj-c0wUcGVRnRPpHEM3mppLHu89_ASeDkUGo_eSdG1b715tDb61bW4s_YyP0EQ2lnHd70N0xCb-xkKhmnz8AYdi83PYn12OWc1HkvfrttjzbDkL8WA87Ifr_bRSkf--L_RRE2mwI2WFwtpTfgOzZoQo1llYRjfzRqi9xebf13dXyyviCY1AimFNP5mLxDjqCD0B_DSlK0F4kKjH1y8oL14QVogJSoNHOk9U0i0IIkW0sPJcMNLDwe9-Idv98vtPVJd0TCNCCq6HZLQCqmNmL3WrfLCpYc3Ht7smN53xZyKxsObun4-_pm1Uvw3UO3hDVOqA2Umk_ASMU7rrgSk94CoJGpvqbUk1Nq6ldBKQUEpKJESneyLTU-ilKCMaCiR7DhSVLJWz3vkrSb0Byq7pjVktsife372IMVOkgYRuesa4Fr163MjWkNmIgurQc7g0NZCgjRlZopmWnb8h4c3BePHMjTblS9EVrMIzXZoJowY0rZGWKfbTs8VmjVm6Gg2O6TxjKhmpl65JgcvXDOuoUaziovZM8hCKDD1aLZFs9mO0pkWoqZ7wrgXrn-KZxorTlq1FxrNKipqIWclIzsulGZU9TqsYd3iCz5nYvFg4nBwtMAYzQtXICovvEctkQokIhoBL5GoUMVq6Fti03IlSkA74MaZmOB9TWhqHjvOGd-hliiFPJxsOk5NE_RgCn4nnOzMeBIkOGpE2dlAmDhAOBkmN7ok8J9pjNbLLzMvvF8vv6CvXGnZ9Sq2UIO9GuRXR91GQ-RPg4Ap7YOKh0Mf-Qf_-C9McQVhiqxfh0svXKpX1V88SMa19bqn3nXTcyNJXnKhtATSeDgeImQf0NJ_zfc8fOcfBppTkDW4wQS3rEh0CXdVA-Fd-51v2Y6baJc6CdpV4IxuBw47cEmSFkU4glsZJ30EKp5Bvq4E13DQfc0_CC9ruD-YhCm9ju167Q5eOLHdIkng8lTbeNTfjKFWqBCivortjG4HLhrD-TQjxSL-pJpeiKNl4c5QimkwnqE-6Od2u8n77Wbs508vjAOyicLg51eyRw_ikMZT0jJJr6CmTNz1lIzVREUYFbE_Msh6-eXptYVvsCM1-wtkX7q1G6vNqh5B5dv7b_erJ8dS2_UfogSbN33WOAOUQ5061CSjFRQfUsuOW5JPA_X6HKBsAlRGUTACOgXo9fJLX3JkM5zqWlhG6zklxWHgu1hBCgl-B-vrFuohTIkSvgBf8vK-YdoQXwfPanfwggleAfHHeH3psq7viGL0rhb0h3J877TznhfqFeANmwOPJ_BlTKsP4WXHv_PfCd0zDkdOB_5N3XXoDZxDH7r0Pi3Jew5r6I270tf_0zFYRGcMzpaBaRKn1TgKTDBMHjYawEXyt8jzlkg9N9EHXZA3p63Jv337e-JyN5mAhpHj1psH0_WYEf5tos9sAD2LY8R4Cpvg4Bdgf7cprDvtQ9GVQBPsznYyAcUZGc92PfLQEfLXpq3H4f_fhWtoHFxniwoJJZAGqO_S51UN03f98fW7PU55OB1Vr89HmXu-YxyGhGPU5B9ASpBbIJLuv7fGSZSTm4yaDiH9g1ZPRO5Af9DoG-G7S01GsUNLxnePULnFR3svJwIHIywHNx93-cq17BR7hkeoVlw_aOmFq3P1czUs6A2rYfuqNDT2GLVCSpd9TcfZnx3k7aSnObC0L5JpyI_HllGnEirS1TovoQYNH3QM7wedb4e0Elx1jfGfK6RBgws5PuZmHYGfxDj6GcforPEkCVe1PcT-B2cT51tun47Hk6vE7p5sjI6dzCT2iV-VdIz-YA7iy-2TC7aFhjiZ97Uy8IHAQQym1i2LxYVFNTjucFgC2mk4-vI10qZerwPmZh4hKYvSCS0baSbvtKTGZNdh6lU6TG4-EYZ-lhSusXotX7nShFO4bK_3B3EVP-yxHG4nh4iiLCpI6ITpnvCM_ywoeUv7ZnhXOfn0OA7vYnJMpiSjiNIgbwhz97ellOTVROFwZR9iD8F6eQxXThleoWfByqtg91AOdTyhjrOyREfTroInu4bHx8eG1PV_AtVi2MAvDGGy6xgZQ9ByEv9SsmeQFxM17B5-g0Xg08zaYST3-Cwtl9aUtrZfRTb0myaU1HVB6I-84ob07BW97sFDVsFKNA3h5XRBXpyy02Yk7F5LamcbOm-xp-3n1CHP6eEQBP1NYc5IZqtihsla0WlsCnItCdPqWD0RR-raeLyQo3rTZHkOvtZnepvbLh5OatIUJfFwcjYVTo8P3n4TxeX5SKfPz8gvPj977PiWVFC_Oub8-dRd5REbKdzlmU09CkOG_j97xOQM9d7Uu4-hoyCIIUzeNZydKvJmczta04nMk46mwXup7U-aLifP-05j-9TWbkc59p9wknMESQLl3zXDb6JQ79vgN1F8Y0q_l7u_CbynaW8JMzM-PAj-VbMNvvHvMJ6xjWM8Ny8KcIBD-h7oenTt7PEXNvf3jP6_aLzPp5HWGo65wsmmnJXHE-oxmTji2hixHFb4x1vuZ9MHA-KQuu8GiriqaIQM4ydV9ZIcVcf8KgGfFH6EszLzBy399wWHNM7jaFYz3h1mO971FXSuxDy2Qm0XR2Y8lQmRj_LcdMuVJlLno7H8shaIXC3JNMeKEkC9_E_PiJF1Unb03vP7-P51cTVk7IgOflwRVkOJXpjeIzgw4yQloMTas1OAZs_2LT0AYqO0etByzKhR_84S7Ev-xL_4ecDTnqnhowBBaScVetkDR_1IGd-hJsRoZw2IvqxWiCkkfgzvWidv90VZiFrPhdx5ePOXhzfZf_1J-MP-Ob4pb8MyCzNyA7dBgnEaxzjNbva3iyKDRZBhHNEKyijDmZ-lFcElEAiqOLlht9jHkZ_6iyBcpH42z6qoisMsKMI0LSO_8CIfGsLquVlbRveN_YTgNvCDLI1ualJArex3bBhzeEG21sPYW6xv5K39-qDodsqL_Joprc5iNNO1_QDun2nsLdbe4q4JcX9x_ihmsUanb6o8fGeNZf5O3p23UpQdBfR1dX_Tyfr2X_8sYhjW8y3-nwAAAP__qFIIcw">