Skip to content

[LoongArch] Assertion '(!UseGPRForFloat || LocVT == GRLenVT) && "Expected an GRLenVT at this stage"' failed. #159529

@alexrp

Description

@alexrp
❯ llc --version | head -n2
LLVM (http://llvm.org/):
  LLVM version 21.1.0

We have two repros for this one:

target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "loongarch64-unknown-linux5.19.0-gnu2.36.0"

define fastcc <64 x i32> @behavior.math.expectVectorsEqual__anon_63531(<64 x i32> %0) {
Entry:
  ret <64 x i32> %0
}
❯ llc reduced_behavior.ll
llc: /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:6848: bool CC_LoongArch(const llvm::DataLayout&, llvm::LoongArchABI::ABI, unsigned int, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&, bool, bool, llvm::Type*): Assertion `(!UseGPRForFloat || LocVT == GRLenVT) && "Expected an GRLenVT at this stage"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llc reduced_behavior.ll
1.      Running pass 'Function Pass Manager' on module 'reduced_behavior.ll'.
2.      Running pass 'LoongArch DAG->DAG Pattern Instruction Selection' on function '@behavior.math.expectVectorsEqual__anon_63531'
 #0 0x00007d2e67d91af0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:838:3
 #1 0x00007d2e67d8e9b4 llvm::sys::RunSignalHandlers() /home/alexrp/Source/llvm-project/llvm/lib/Support/Signals.cpp:104:20
 #2 0x00007d2e67d8f1e9 SignalHandler(int, siginfo_t*, void*) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:14
 #3 0x00007d2e666458d0 (/lib/x86_64-linux-gnu/libc.so.6+0x458d0)
 #4 0x00007d2e666a49bc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007d2e666a49bc __pthread_kill_internal ./nptl/pthread_kill.c:89:10
 #6 0x00007d2e666a49bc pthread_kill ./nptl/pthread_kill.c:100:10
 #7 0x00007d2e6664579e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007d2e666288cd internal_signal_block_all ./stdlib/../sysdeps/unix/sysv/linux/internal-signals.h:81:3
 #9 0x00007d2e666288cd __abort_lock_wrlock ./stdlib/abort.c:58:3
#10 0x00007d2e666288cd abort ./stdlib/abort.c:81:3
#11 0x00007d2e66628830 __assert_perror_fail ./assert/assert-perr.c:31:1
#12 0x00007d2e679a61e8 CC_LoongArch(llvm::DataLayout const&, llvm::LoongArchABI::ABI, unsigned int, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&, bool, bool, llvm::Type*) (.cold) /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:6836:5
#13 0x00007d2e6b9300ae llvm::LoongArchTargetLowering::analyzeInputArgs(llvm::MachineFunction&, llvm::CCState&, llvm::SmallVectorImpl<llvm::ISD::InputArg> const&, bool, bool (*)(llvm::DataLayout const&, llvm::LoongArchABI::ABI, unsigned int, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&, bool, bool, llvm::Type*)) const /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:6880:5
#14 0x00007d2e6b947771 llvm::SmallVectorBase<unsigned int>::size() const /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/SmallVector.h:79:32
#15 0x00007d2e6b947771 llvm::LoongArchTargetLowering::LowerFormalArguments(llvm::SDValue, unsigned int, bool, llvm::SmallVectorImpl<llvm::ISD::InputArg> const&, llvm::SDLoc const&, llvm::SelectionDAG&, llvm::SmallVectorImpl<llvm::SDValue>&) const /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:7114:40
#16 0x00007d2e688d1890 llvm::SelectionDAGISel::LowerArguments(llvm::Function const&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:11768:46
#17 0x00007d2e6898d9d1 std::__uniq_ptr_impl<llvm::SwiftErrorValueTracking, std::default_delete<llvm::SwiftErrorValueTracking>>::_M_ptr() const /usr/include/c++/14/bits/unique_ptr.h:193:18
#18 0x00007d2e6898d9d1 std::unique_ptr<llvm::SwiftErrorValueTracking, std::default_delete<llvm::SwiftErrorValueTracking>>::get() const /usr/include/c++/14/bits/unique_ptr.h:465:27
#19 0x00007d2e6898d9d1 std::unique_ptr<llvm::SwiftErrorValueTracking, std::default_delete<llvm::SwiftErrorValueTracking>>::operator->() const /usr/include/c++/14/bits/unique_ptr.h:458:12
#20 0x00007d2e6898d9d1 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1670:56
#21 0x00007d2e6898e3d9 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:605:22
#22 0x00007d2e68985137 llvm::OptLevelChanger::~OptLevelChanger() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:267:11
#23 0x00007d2e68985137 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:373:1
#24 0x00007d2e68985137 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:345:6
#25 0x00007d2e682d947b llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#26 0x00007d2e67f4cd34 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1408:7
#27 0x00007d2e67f4cf45 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
#28 0x00007d2e67f4cf45 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
#29 0x00007d2e67f4cf45 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
#30 0x00007d2e67f4cf45 llvm::FPPassManager::runOnModule(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1443:22
#31 0x00007d2e67f4d75b runOnModule /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1520:7
#32 0x00007d2e67f4d75b llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:531:55
#33 0x00005aa6e4dca16d compileModule(char**, llvm::LLVMContext&) /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:761:34
#34 0x00005aa6e4dbe4cf main /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:404:35
#35 0x00007d2e6662a578 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#36 0x00007d2e6662a63b call_init ./csu/../csu/libc-start.c:128:20
#37 0x00007d2e6662a63b __libc_start_main ./csu/../csu/libc-start.c:347:5
#38 0x00005aa6e4dbfaa5 _start (/opt/llvm-21/bin/llc+0x14aa5)
fish: Job 1, 'llc reduced_behavior.ll' terminated by signal SIGABRT (Abort)

target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "loongarch64-unknown-linux5.19.0-musl"

define fastcc <16 x double> @testing.expectEqualInner__anon_1383779(<16 x double> %0, <16 x double> %1) {
Entry:
  ret <16 x double> %0
}
❯ llc reduced_std.ll
llc: /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:6848: bool CC_LoongArch(const llvm::DataLayout&, llvm::LoongArchABI::ABI, unsigned int, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&, bool, bool, llvm::Type*): Assertion `(!UseGPRForFloat || LocVT == GRLenVT) && "Expected an GRLenVT at this stage"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llc reduced_std.ll
1.      Running pass 'Function Pass Manager' on module 'reduced_std.ll'.
2.      Running pass 'LoongArch DAG->DAG Pattern Instruction Selection' on function '@testing.expectEqualInner__anon_1383779'
 #0 0x00007e6a7e991af0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:838:3
 #1 0x00007e6a7e98e9b4 llvm::sys::RunSignalHandlers() /home/alexrp/Source/llvm-project/llvm/lib/Support/Signals.cpp:104:20
 #2 0x00007e6a7e98f1e9 SignalHandler(int, siginfo_t*, void*) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:14
 #3 0x00007e6a7d2458d0 (/lib/x86_64-linux-gnu/libc.so.6+0x458d0)
 #4 0x00007e6a7d2a49bc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007e6a7d2a49bc __pthread_kill_internal ./nptl/pthread_kill.c:89:10
 #6 0x00007e6a7d2a49bc pthread_kill ./nptl/pthread_kill.c:100:10
 #7 0x00007e6a7d24579e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007e6a7d2288cd internal_signal_block_all ./stdlib/../sysdeps/unix/sysv/linux/internal-signals.h:81:3
 #9 0x00007e6a7d2288cd __abort_lock_wrlock ./stdlib/abort.c:58:3
#10 0x00007e6a7d2288cd abort ./stdlib/abort.c:81:3
#11 0x00007e6a7d228830 __assert_perror_fail ./assert/assert-perr.c:31:1
#12 0x00007e6a7e5a61e8 CC_LoongArch(llvm::DataLayout const&, llvm::LoongArchABI::ABI, unsigned int, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&, bool, bool, llvm::Type*) (.cold) /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:6836:5
#13 0x00007e6a825300ae llvm::LoongArchTargetLowering::analyzeInputArgs(llvm::MachineFunction&, llvm::CCState&, llvm::SmallVectorImpl<llvm::ISD::InputArg> const&, bool, bool (*)(llvm::DataLayout const&, llvm::LoongArchABI::ABI, unsigned int, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&, bool, bool, llvm::Type*)) const /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:6880:5
#14 0x00007e6a82547771 llvm::SmallVectorBase<unsigned int>::size() const /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/SmallVector.h:79:32
#15 0x00007e6a82547771 llvm::LoongArchTargetLowering::LowerFormalArguments(llvm::SDValue, unsigned int, bool, llvm::SmallVectorImpl<llvm::ISD::InputArg> const&, llvm::SDLoc const&, llvm::SelectionDAG&, llvm::SmallVectorImpl<llvm::SDValue>&) const /home/alexrp/Source/llvm-project/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp:7114:40
#16 0x00007e6a7f4d1890 llvm::SelectionDAGISel::LowerArguments(llvm::Function const&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:11768:46
#17 0x00007e6a7f58d9d1 std::__uniq_ptr_impl<llvm::SwiftErrorValueTracking, std::default_delete<llvm::SwiftErrorValueTracking>>::_M_ptr() const /usr/include/c++/14/bits/unique_ptr.h:193:18
#18 0x00007e6a7f58d9d1 std::unique_ptr<llvm::SwiftErrorValueTracking, std::default_delete<llvm::SwiftErrorValueTracking>>::get() const /usr/include/c++/14/bits/unique_ptr.h:465:27
#19 0x00007e6a7f58d9d1 std::unique_ptr<llvm::SwiftErrorValueTracking, std::default_delete<llvm::SwiftErrorValueTracking>>::operator->() const /usr/include/c++/14/bits/unique_ptr.h:458:12
#20 0x00007e6a7f58d9d1 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1670:56
#21 0x00007e6a7f58e3d9 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:605:22
#22 0x00007e6a7f585137 llvm::OptLevelChanger::~OptLevelChanger() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:267:11
#23 0x00007e6a7f585137 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:373:1
#24 0x00007e6a7f585137 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:345:6
#25 0x00007e6a7eed947b llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#26 0x00007e6a7eb4cd34 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1408:7
#27 0x00007e6a7eb4cf45 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
#28 0x00007e6a7eb4cf45 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
#29 0x00007e6a7eb4cf45 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
#30 0x00007e6a7eb4cf45 llvm::FPPassManager::runOnModule(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1443:22
#31 0x00007e6a7eb4d75b runOnModule /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1520:7
#32 0x00007e6a7eb4d75b llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:531:55
#33 0x000062fde5cb116d compileModule(char**, llvm::LLVMContext&) /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:761:34
#34 0x000062fde5ca54cf main /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:404:35
#35 0x00007e6a7d22a578 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#36 0x00007e6a7d22a63b call_init ./csu/../csu/libc-start.c:128:20
#37 0x00007e6a7d22a63b __libc_start_main ./csu/../csu/libc-start.c:347:5
#38 0x000062fde5ca6aa5 _start (/opt/llvm-21/bin/llc+0x14aa5)
fish: Job 1, 'llc reduced_std.ll' terminated by signal SIGABRT (Abort)

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions