Issue 175472
Summary [M68k] Assertion failure on EXTRACT_SUBREG while selecting register class
Labels bug, backend:m68k
Assignees
Reporter knickish
    Hit an error while compiling rust code for m68k, this is minimized from the `<adler2::Adler32>::compute` method in the `adler2` crate:


> llc: /llvm-project/llvm/lib/CodeGen/TargetRegisterInfo.cpp:226: const llvm::TargetRegisterClass* getMinimalPhysRegClass(const llvm::TargetRegisterInfo*, llvm::MCRegister, TypeT) [with TypeT = llvm::MVT]: Assertion `BestRC && "Couldn't find the register class"' failed.


<details>
    <summary> Full error output </summary>

```
llc: /llvm-project/llvm/lib/CodeGen/TargetRegisterInfo.cpp:226: const llvm::TargetRegisterClass* getMinimalPhysRegClass(const llvm::TargetRegisterInfo*, llvm::MCRegister, TypeT) [with TypeT = llvm::MVT]: Assertion `BestRC && "Couldn't find the register class"' failed.
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 llvm/test/CodeGen/M68k/Regression/minimized.ll -mtriple=m68k -debug
1. Running pass 'Function Pass Manager' on module 'llvm/test/CodeGen/M68k/Regression/minimized.ll'.
2.      Running pass 'M68k DAG->DAG Pattern Instruction Selection' on function '@_RNvMNtCsgv0MAaSe370_6adler24algoNtB4_7Adler327compute'
 #0 0x000064a953d138e2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /llvm-project/llvm/lib/Support/Unix/Signals.inc:846:3
 #1 0x000064a953d1083f llvm::sys::RunSignalHandlers()/llvm-project/llvm/lib/Support/Signals.cpp:108:20
 #2 0x000064a953d11051 SignalHandler(int, siginfo_t*, void*) /llvm-project/llvm/lib/Support/Unix/Signals.inc:429:14
 #3 0x0000782de1c45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x0000782de1c9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x0000782de1c9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x0000782de1c9eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x0000782de1c4527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x0000782de1c288ff abort ./stdlib/abort.c:81:7
 #9 0x0000782de1c2881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x0000782de1c3b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x000064a952f1b880 llvm::TargetRegisterClass const* getMinimalPhysRegClass<llvm::MVT>(llvm::TargetRegisterInfo const*, llvm::MCRegister, llvm::MVT) /llvm-project/llvm/lib/CodeGen/TargetRegisterInfo.cpp:219:3
#12 0x000064a9539b71de PickNodeToScheduleBottomUp /llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1566:41
#13 0x000064a9539b71de ListScheduleBottomUp /llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1625:43
#14 0x000064a9539b71de (anonymous namespace)::ScheduleDAGRRList::Schedule() /llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:383:23
#15 0x000064a953ac3a9b llvm::TimeRegion::~TimeRegion() /llvm-project/llvm/include/llvm/Support/Timer.h:167:9
#16 0x000064a953ac3a9b llvm::NamedRegionTimer::~NamedRegionTimer() /llvm-project/llvm/include/llvm/Support/Timer.h:175:8
#17 0x000064a953ac3a9b llvm::SelectionDAGISel::CodeGenAndEmitDAG() /llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1158:3
#18 0x000064a953ac80e6 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1937:33
#19 0x000064a953ac995c llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:635:22
#20 0x000064a953ab4807 llvm::OptLevelChanger::~OptLevelChanger() /llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:285:11
#21 0x000064a953ab4807 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:402:1
#22 0x000064a953ab4807 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:374:6
#23 0x000064a952b48384 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) /llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#24 0x000064a953154d84 llvm::FPPassManager::runOnFunction(llvm::Function&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1408:7
#25 0x000064a953154fa1 llvm::ilist_detail::node_base_prevnext<llvm::ilist_node_base<true, void>, true>::getNext() const /llvm-project/llvm/include/llvm/ADT/ilist_node_base.h:42:38
#26 0x000064a953154fa1 llvm::ilist_node_impl<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>>::getNext() /llvm-project/llvm/include/llvm/ADT/ilist_node.h:108:66
#27 0x000064a953154fa1 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>::operator++() /llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:187:25
#28 0x000064a953154fa1 llvm::FPPassManager::runOnModule(llvm::Module&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1443:22
#29 0x000064a9531557dd runOnModule /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1520:7
#30 0x000064a9531557dd llvm::legacy::PassManagerImpl::run(llvm::Module&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:531:55
#31 0x000064a9520d0227 compileModule /llvm-project/llvm/tools/llc/llc.cpp:874:34
#32 0x000064a9520d0227 main /llvm-project/llvm/tools/llc/llc.cpp:462:35
#33 0x0000782de1c2a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#34 0x0000782de1c2a28b call_init ./csu/../csu/libc-start.c:128:20
#35 0x0000782de1c2a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#36 0x000064a9520c0be5 _start (/llvm-project/build/bin/llc+0x1a27be5)
Aborted (core dumped)
```
</details>

```llvm
define i32 @minimized() {
start:
  %_137 = load i32, ptr null, align 2
  %_136 = urem i32 %_137, 65521
  %0 = trunc i32 %_136 to i16
  store i16 %0, ptr null, align 2
 %_140 = load i32, ptr null, align 2
  %_139 = mul i32 %_140, 65521
  ret i32 %_139
}
```

_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to