-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Open
Copy link
Labels
Description
Using the following IR:
target datalayout = "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"
target triple = "avr"
define float @__addsf3(i32 %0) addrspace(1) {
%2 = icmp ult i32 %0, -2139095039
br i1 %2, label %3, label %4
3: ; preds = %1
ret float 0.000000e+00
4: ; preds = %1
ret float 0.000000e+00
}
Results in a crash when compiled:
$ llvm-build.main/bin/llc reduced.ll
llc: /home/ayke/src/tinygo/tinygo/llvm-project.main/llvm/include/llvm/ADT/APInt.h:127: llvm::APInt::APInt(unsigned int, uint64_t, bool, bool): Assertion `llvm::isUIntN(BitWidth, val) && "Value is not an N-bit unsigned value"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llvm-build.main/bin/llc reduced.ll
1. Running pass 'Function Pass Manager' on module 'reduced.ll'.
2. Running pass 'AVR DAG->DAG Instruction Selection' on function '@__addsf3'
#0 0x0000000004d5abb0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (llvm-build.main/bin/llc+0x4d5abb0)
#1 0x0000000004d5842c SignalHandler(int) Signals.cpp:0:0
#2 0x0000ffff66724840 (linux-vdso.so.1+0x840)
#3 0x0000ffff661ff05c __pthread_kill_implementation (/lib64/libc.so.6+0x8f05c)
#4 0x0000ffff661ab53c gsignal (/lib64/libc.so.6+0x3b53c)
#5 0x0000ffff66195a48 abort (/lib64/libc.so.6+0x25a48)
#6 0x0000ffff661a3f60 __assert_fail_base (/lib64/libc.so.6+0x33f60)
#7 0x0000000004aeafa8 llvm::SelectionDAG::getConstant(unsigned long, llvm::SDLoc const&, llvm::EVT, bool, bool) (llvm-build.main/bin/llc+0x4aeafa8)
#8 0x0000000002f8afb8 llvm::AVRTargetLowering::getAVRCmp(llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, llvm::SDValue&, llvm::SelectionDAG&, llvm::SDLoc) const AVRISelLowering.cpp:0:0
#9 0x0000000002f8b8fc llvm::AVRTargetLowering::LowerSETCC(llvm::SDValue, llvm::SelectionDAG&) const AVRISelLowering.cpp:0:0
#10 0x0000000004a3dd24 llvm::TargetLowering::LowerOperationWrapper(llvm::SDNode*, llvm::SmallVectorImpl<llvm::SDValue>&, llvm::SelectionDAG&) const (llvm-build.main/bin/llc+0x4a3dd24)
#11 0x0000000004b371dc llvm::DAGTypeLegalizer::CustomLowerNode(llvm::SDNode*, llvm::EVT, bool) LegalizeTypes.cpp:0:0
#12 0x0000000004bb5704 llvm::DAGTypeLegalizer::ExpandIntegerOperand(llvm::SDNode*, unsigned int) LegalizeIntegerTypes.cpp:0:0
#13 0x0000000004b37e00 llvm::DAGTypeLegalizer::run() LegalizeTypes.cpp:0:0
#14 0x0000000004b38a80 llvm::SelectionDAG::LegalizeTypes() (llvm-build.main/bin/llc+0x4b38a80)
#15 0x0000000004b24c98 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (llvm-build.main/bin/llc+0x4b24c98)
#16 0x0000000004b28208 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (llvm-build.main/bin/llc+0x4b28208)
#17 0x0000000004b29a38 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (llvm-build.main/bin/llc+0x4b29a38)
#18 0x0000000004b15bac llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (llvm-build.main/bin/llc+0x4b15bac)
#19 0x0000000003abef9c llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#20 0x0000000004124c00 llvm::FPPassManager::runOnFunction(llvm::Function&) (llvm-build.main/bin/llc+0x4124c00)
#21 0x0000000004124e1c llvm::FPPassManager::runOnModule(llvm::Module&) (llvm-build.main/bin/llc+0x4124e1c)
#22 0x0000000004125920 llvm::legacy::PassManagerImpl::run(llvm::Module&) (llvm-build.main/bin/llc+0x4125920)
#23 0x000000000252f5e0 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#24 0x0000000002530060 main (llvm-build.main/bin/llc+0x2530060)
#25 0x0000ffff6619625c __libc_start_call_main (/lib64/libc.so.6+0x2625c)
#26 0x0000ffff6619633c __libc_start_main@GLIBC_2.17 (/lib64/libc.so.6+0x2633c)
#27 0x00000000025244f0 _start (llvm-build.main/bin/llc+0x25244f0)
fish: Job 1, 'llvm-build.main/bin/llc reduced…' terminated by signal SIGABRT (Abort)
This is LLVM 20.x, at commit hash 87f0227. I did not test LLVM 21. Note that this only happens when LLVM is built with assertions enabled (they're disabled by default).