-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Closed
Copy link
Description
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "loongarch64-unknown-linux5.19.0-musl"
define void @foo() {
Entry:
call void asm sideeffect "", "=*r|m,r|m"(ptr elementtype(i32) null, i64 0)
ret void
}
❯ llc --version | head -n2
LLVM (http://llvm.org/):
LLVM version 21.1.0
❯ llc -O3 reduced.ll
LLVM ERROR: unsupported machine operand type
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llc -O3 reduced.ll
1. Running pass 'Function Pass Manager' on module 'reduced.ll'.
2. Running pass 'LoongArch Merge Base Offset' on function '@foo'
#0 0x00007c5f1b191af0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:838:3
#1 0x00007c5f1b18e9b4 llvm::sys::RunSignalHandlers() /home/alexrp/Source/llvm-project/llvm/lib/Support/Signals.cpp:104:20
#2 0x00007c5f1b18f1e9 SignalHandler(int, siginfo_t*, void*) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:14
#3 0x00007c5f19a458d0 (/lib/x86_64-linux-gnu/libc.so.6+0x458d0)
#4 0x00007c5f19aa49bc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007c5f19aa49bc __pthread_kill_internal ./nptl/pthread_kill.c:89:10
#6 0x00007c5f19aa49bc pthread_kill ./nptl/pthread_kill.c:100:10
#7 0x00007c5f19a4579e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007c5f19a288cd internal_signal_block_all ./stdlib/../sysdeps/unix/sysv/linux/internal-signals.h:81:3
#9 0x00007c5f19a288cd __abort_lock_wrlock ./stdlib/abort.c:58:3
#10 0x00007c5f19a288cd abort ./stdlib/abort.c:81:3
#11 0x00007c5f1aaa17df std::mutex::lock() /usr/include/c++/14/bits/std_mutex.h:117:22
#12 0x00007c5f1aaa17df std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/include/c++/14/bits/std_mutex.h:250:23
#13 0x00007c5f1aaa17df llvm::install_bad_alloc_error_handler(void (*)(void*, char const*, bool), void*) (.cold) /home/alexrp/Source/llvm-project/llvm/lib/Support/ErrorHandling.cpp:162:61
#14 0x00007c5f1b0a5215 (/opt/llvm-21/bin/../lib/libLLVM.so.21.1+0xea5215)
#15 0x00007c5f1ed54d11 llvm::SmallVectorBase<unsigned int>::size() const /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/SmallVector.h:79:32
#16 0x00007c5f1ed54d11 llvm::IndexedMap<std::pair<llvm::PointerUnion<llvm::TargetRegisterClass const*, llvm::RegisterBank const*>, llvm::MachineOperand*>, llvm::VirtReg2IndexFunctor>::operator[](llvm::Register) const /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/IndexedMap.h:53:7
#17 0x00007c5f1ed54d11 llvm::MachineRegisterInfo::getRegUseDefListHead(llvm::Register) const /home/alexrp/Source/llvm-project/llvm/include/llvm/CodeGen/MachineRegisterInfo.h:124:33
#18 0x00007c5f1ed54d11 llvm::MachineRegisterInfo::use_instr_begin(llvm::Register) const /home/alexrp/Source/llvm-project/llvm/include/llvm/CodeGen/MachineRegisterInfo.h:481:58
#19 0x00007c5f1ed54d11 llvm::MachineRegisterInfo::use_instructions(llvm::Register) const /home/alexrp/Source/llvm-project/llvm/include/llvm/CodeGen/MachineRegisterInfo.h:489:22
#20 0x00007c5f1ed54d11 foldIntoMemoryOps /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchMergeBaseOffset.cpp:742:56
#21 0x00007c5f1ed54d11 runOnMachineFunction /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchMergeBaseOffset.cpp:831:38
#22 0x00007c5f1ed54d11 (anonymous namespace)::LoongArchMergeBaseOffsetOpt::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchMergeBaseOffset.cpp:800:6
#23 0x00007c5f1b6d947b llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#24 0x00007c5f1b34cd34 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1408:7
#25 0x00007c5f1b34cf45 llvm::ilist_detail::node_base_prevnext<llvm::ilist_node_base<true, void>, true>::getNext() const /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/ilist_node_base.h:42:38
#26 0x00007c5f1b34cf45 llvm::ilist_node_impl<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>>::getNext() /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/ilist_node.h:119:66
#27 0x00007c5f1b34cf45 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>::operator++() /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:187:25
#28 0x00007c5f1b34cf45 llvm::FPPassManager::runOnModule(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1443:22
#29 0x00007c5f1b34d75b runOnModule /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1520:7
#30 0x00007c5f1b34d75b llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:531:55
#31 0x0000641081a3416d compileModule(char**, llvm::LLVMContext&) /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:761:34
#32 0x0000641081a284cf main /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:404:35
#33 0x00007c5f19a2a578 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#34 0x00007c5f19a2a63b call_init ./csu/../csu/libc-start.c:128:20
#35 0x00007c5f19a2a63b __libc_start_main ./csu/../csu/libc-start.c:347:5
#36 0x0000641081a29aa5 _start (/opt/llvm-21/bin/llc+0x14aa5)
fish: Job 1, 'llc -O3 reduced.ll' terminated by signal SIGABRT (Abort)
Changing the i64 0
argument to ptr null
makes the repro no longer crash, as does changing the corresponding r|m
to r
.
All other backends I've tried handle this gracefully.