<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/160611>160611</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
dag combiner for multiple archs crashes out with Assertion failed: (NumBits >= MIN_INT_BITS && "bitwidth too small")
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
llvm:codegen,
crash-on-valid
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
regehr
</td>
</tr>
</table>
<pre>
This appears to be a different bug than a few other open issues that happen to trigger this same assertion.
this valid IR:
```llvm
define i32 @f() {
%1 = fptosi half 0xH7E00 to i32
%2 = call i32 @llvm.smin.i32(i32 0, i32 %1)
%3 = call i32 @llvm.smax.i32(i32 %2, i32 0)
ret i32 %3
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #0
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #0
attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
causes llc for aarch64, riscv64, and x86-64 to assert out:
```
~$ llc -march=x86-64 crash.ll
Assertion failed: (NumBits >= MIN_INT_BITS && "bitwidth too small"), function get, file Type.cpp, line 320.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: llc -march=x86-64 crash.ll
1. Running pass 'Function Pass Manager' on module 'crash.ll'.
2. Running pass 'X86 DAG->DAG Instruction Selection' on function '@f'
#0 0x000000010af02cd8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x15ecd8)
#1 0x000000010af00328 llvm::sys::RunSignalHandlers() (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x15c328)
#2 0x000000010af037d0 SignalHandler(int, __siginfo*, void*) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x15f7d0)
#3 0x0000000185b716a4 (/usr/lib/system/libsystem_platform.dylib+0x1804ad6a4)
#4 0x0000000185b3788c (/usr/lib/system/libsystem_pthread.dylib+0x18047388c)
#5 0x0000000185a40a3c (/usr/lib/system/libsystem_c.dylib+0x18037ca3c)
#6 0x0000000185a3fc70 (/usr/lib/system/libsystem_c.dylib+0x18037bc70)
#7 0x000000010deacea0 llvm::FunctionType::FunctionType(llvm::Type*, llvm::ArrayRef<llvm::Type*>, bool) (.cold.2) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x278ea0)
#8 0x000000010de55f90 llvm::IntegerType::get(llvm::LLVMContext&, unsigned int) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x221f90)
#9 0x000000010d53d4e4 llvm::EVT::getExtendedIntegerVT(llvm::LLVMContext&, unsigned int) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCodeGen.dylib+0x5794e4)
#10 0x000000010be3b6a8 PerformMinMaxFpToSatCombine(llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, llvm::SelectionDAG&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x7b6a8)
#11 0x000000010bdd7ff8 (anonymous namespace)::DAGCombiner::visitIMINMAX(llvm::SDNode*) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x17ff8)
#12 0x000000010bdc918c (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x918c)
#13 0x000000010bdc54ac llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::BatchAAResults*, llvm::CodeGenOptLevel) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x54ac)
#14 0x000000010c07a098 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x2ba098)
#15 0x000000010c078e50 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x2b8e50)
#16 0x000000010c075e30 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x2b5e30)
#17 0x000000010c0741b0 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSelectionDAG.dylib+0x2b41b0)
#18 0x000000010d225a00 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCodeGen.dylib+0x261a00)
#19 0x000000010ddedc48 llvm::FPPassManager::runOnFunction(llvm::Function&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x1b9c48)
#20 0x000000010ddf54f4 llvm::FPPassManager::runOnModule(llvm::Module&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x1c14f4)
#21 0x000000010ddee57c llvm::legacy::PassManagerImpl::run(llvm::Module&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x1ba57c)
#22 0x0000000102980b98 compileModule(char**, llvm::LLVMContext&) (/Users/regehr/llvm-project/for-alive/bin/llc+0x10001cb98)
#23 0x000000010297ec0c main (/Users/regehr/llvm-project/for-alive/bin/llc+0x10001ac0c)
#24 0x0000000185796b98
zsh: abort llc -march=x86-64 crash.ll
~$
```
cc @MitchBriles
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMmN9z4ygSx_8a8kLFhUCy5Ac_yHEy66rJbGqSm9q3FIKWzS0CFaD8uIf726-Q7Fhysjt7s8ncpbZ25BY0n2_TNAjuvdoagCXKVihbn_Eu7KxbOtjCzp1VVj4v73bKY962wJ3HweIKMMdS1TU4MAFX3RaHHTeY4xoesQ07cNi2YLDyvgMfXwa8iw5M7B6c2m7B4RDdet4A5t6DC8qaGSIlImX_5oFrJfHmK2LRhOZk-E_rhwaRUkKtDGDFKEYpqREtEF1glK8QKTGiWYIRW-O6DdYrvOO6xuTpl_ySkEigGI3NYjvatxNc64OvOMDMN8rMYjNaRDNB9GJ4T7ME0cWhN_uj3vxp1DsOc3BADr0dhINHFvXl60E7Yit81RkRw4HLEJxHrMTGxkEqLn7HxtYOABvrn43AxnbmURmJfQui0zzwSgN-VFo7CJ0zuIHGumdEC2MNDINLEJo7-BPBe9o-pJSR_zHZOJhvkvEQnKq6AL439pOC8tU7suH9_ByycBhX8M6Dx1oLXFuHOXdiN08jolNePAyP3Ej8VMzP52lMvSHVse3CSV4jUv4b0bR3dt5ET4it9_2E43430xqRsjwsFVxzpUHGKUC0-NI1KxU8Ruwyir_efLnffLm7X23ubjGic0TnGFFaqfCoZNjhYC32Ddca0RjKiFkfZnYLof-tNOC75xZmom2jQcf1xiiJa_Tm82V5e4l9VzUqYN6XAAetdSFq3IXQxtxA9ArRq60Ku66aCdsgetWv3uGf89bZf4IIiF4NdQLRqz5YygjdScBhB4NyHGcwOC5g_94H1_WwfTly0DorOzH0qLptJLwNcdZl17RDnCP24sbZreMN5m7bNWBCn8DfCXgSO37tjFFmi1vuY4rlL8vgJhquueFbcIjm2BrcWNlpiK1evNA8ItG3PP1WzPG6_HSO2OW6_IQ3R234FjT0T3vHLzOEaD7UvHwodoxg8kSGv4TwmlAhC9yHmpWIlf7ZDw83TpnQR-YuRhPR4tjI8cd764MD3vQJc4GVCcMyKxC9-ocHF2do2BdeT2Ft3TnX6gHiK1UN___8-dv1bdfGvJjJ5968Ik9JBkIW-zqIKEtO6Amjb9J_7cyt2hquf-FG6h6n-CBAwegIkJ4AslwSPEGJtcn0y-b-3qutMrVFtIy_H6yS_eOHcNa5JEdONuIssipP5jzdj9p59-LPP_sAzfBzeL5vNQ-1dc3YeUFSLuc8PfpPp_5ZXhTiL_oPOwdcnrjPWVGIo_ts4p6nhLO_6F5MHbNccDZyPJ86ZrXIyQ86rkQ-Cng-TgwJXAAno8w9VIlYRd-wjFffYOgz5mgsnePPX6FG7OJ1S3YZG1fW6n1uzYTVckbfIdMurIORcJoXwEeqi6nqLKsXY9UbE2AL7ii631BGWochTICnsK80nenPoPKdSs4pP03qxYh_MeHPmEwhHfFffrt74b58CmAkyL2mb3c_W4iET2BGWrJ8kcJ-ScbSOan8FbBqzgt8Ay4u5mtlrvnTVXtnb3m4sE2lzDTpbtffuO5gmnR_07i5XQ8PF9bIyH_S57CnrctPfcz-flkceRwFKo-ROMZpssdUUuZ1XcSRubHmubGdx4Y34Nt-V1wMrOvy0z5qbjA8KK_C5nrz5br87SSQX3ql71Lm39aTROKjHjrVIxbJUIr_Kz3izZz4cCmR9aiEnSjJUi7-KGH2ifWaem_7DA-gpwm34kHsyvIr-E4H_6rE7lfYr23Y9_0o0VHWUfR4JyWC5Jwsij8QvbkFPWEtjbxsVOgX0Lucf94GplWEOiJnJ8gFZOS7yIO11HrFvRIrbcXvfjJxLwdpYY0PH1oRaBWRj4LmJ4IyYN8X5Drzq7nmYqcMHNgngl69-1BFkfmoKD9RlCbVnyn6DFsunv8vdUXyo67pgYPSjJOxrhO0-Ek2EvWmmveV8XqbpvOEk5GC6ZFDghTpeL1f3UTow2fkT2afnJWSaiHS46qnZApeZ2md_gXw6_4beJpAe9NHQIskrY-HIpqcRBuyfLyl6FHej_A3TXtc5D8NveJZftwY6GRfp4uCVIsCC9u0SsNLUMWOu34nO9nMTs-jPwJbKdM3EANe5BDVaB-gbEqYgyACN1yZ9xmMCzIKx_SLM1_MIwop_-V3iJWYV9YF3P995xKnv1l74_5OYJSSaxXEbuWUBo_P5JLJBVvwM1gmeVbkGSVscbZbFlXCaF5XICkTOU_zXNYFiV_gVGZCJGdqSQnNyIKmlCYsW8yg5hLmQAsiWU6THKUEGq70rL_VtG571l97LZM5mSfJmeYVaN_fwlNaddv-Zu4CUbqfX2ElbMG8mHt159ac9_fk0Zytz9yyj3bVbT1KiVY--ONwQQUNS8m3eH_wc_2tZdPpoFoNOEbPD1EDj20X8KMKO_whN45nndPLH78n3MfsYUn_EwAA__9LqJfw">