-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Labels
Description
This appears to be a different bug than a few other open issues that happen to trigger this same assertion.
this valid IR:
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