Issue 63322
Summary [AArch64][SVE][SelectionDAG] infinite loop caused by legalizing & combining CONCAT_VECTORS
Labels new issue
Assignees
Reporter FLZ101
    ## test case

```llvm
; RUN: llc -O3 -mcpu=neoverse-n2 < %s | FileCheck %s
; CHECK: allocno_reload_assign:

; Function Attrs: nocallback nofree nosync nounwind willreturn writeonly
declare void @llvm.masked.scatter.nxv16i8.nxv16p0(<vscale x 16 x i8>, <vscale x 16 x ptr>, i32 immarg, <vscale x 16 x i1>) #0

define fastcc i8 @allocno_reload_assign() {
  br label %1

1: ; preds = %1, %0
  call void @llvm.masked.scatter.nxv16i8.nxv16p0(<vscale x 16 x i8> zeroinitializer, <vscale x 16 x ptr> zeroinitializer, i32 0, <vscale x 16 x i1> xor (<vscale x 16 x i1> shufflevector (<vscale x 16 x i1> icmp eq (<vscale x 16 x ptr> insertelement (<vscale x 16 x ptr> poison, ptr null, i64 0), <vscale x 16 x ptr> zeroinitializer), <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer), <vscale x 16 x i1> shufflevector (<vscale x 16 x i1> insertelement (<vscale x 16 x i1> poison, i1 true, i32 0), <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer)))
  br label %1
}

; uselistorder directives
uselistorder <vscale x 16 x i1> poison, { 1, 2, 0 }

attributes #0 = { nocallback nofree nosync nounwind willreturn writeonly }
```

```
LLVM ERROR: SmallVector unable to grow. Requested capacity (4294967296) is larger than maximum value for size type (4294967295)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ../../../../build-x/bin/llc -O3 -mcpu=neoverse-n2 issue-4803-reduced.ll
1. Running pass 'Function Pass Manager' on module 'issue-4803-reduced.ll'.
2.      Running pass 'AArch64 Instruction Selection' on function '@allocno_reload_assign'
 #0 0x00000000039978dc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:602:22
 #1 0x0000000003997c38 PrintStackTraceSignalHandler(void*) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:675:1
 #2 0x0000000003995a48 llvm::sys::RunSignalHandlers() /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/Signals.cpp:104:20
 #3 0x00000000039972b0 SignalHandler(int) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x0000ffffb8714698 (linux-vdso.so.1+0x698)
 #5 0x0000ffffb81b2200 raise (/lib64/libc.so.6+0x33200)
 #6 0x0000ffffb81b35ac abort (/lib64/libc.so.6+0x345ac)
 #7 0x00000000038f077c llvm::report_fatal_error(llvm::Twine const&, bool) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/ErrorHandling.cpp:125:9
 #8 0x000000000390a568 report_at_maximum_capacity(unsigned long) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/SmallVector.cpp:77:56
 #9 0x000000000390a5f8 unsigned long getNewCapacity<unsigned int>(unsigned long, unsigned long, unsigned long) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/SmallVector.cpp:102:3
#10 0x000000000390a7bc llvm::SmallVectorBase<unsigned int>::grow_pod(void*, unsigned long, unsigned long) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Support/SmallVector.cpp:140:46
#11 0x0000000001a2e2f8 llvm::SmallVectorTemplateCommon<llvm::SDNode*, void>::grow_pod(unsigned long, unsigned long) /home/z30026696/opt/llvm/src/llvm-project/llvm/include/llvm/ADT/SmallVector.h:142:3
#12 0x0000000001a2bd9c llvm::SmallVectorTemplateBase<llvm::SDNode*, true>::grow(unsigned long) /home/z30026696/opt/llvm/src/llvm-project/llvm/include/llvm/ADT/SmallVector.h:529:71
#13 0x0000000001a28730 llvm::SDNode* const* llvm::SmallVectorTemplateCommon<llvm::SDNode*, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<llvm::SDNode*, true>>(llvm::SmallVectorTemplateBase<llvm::SDNode*, true>*, llvm::SDNode* const&, unsigned long) /home/z30026696/opt/llvm/src/llvm-project/llvm/include/llvm/ADT/SmallVector.h:247:30
#14 0x0000000001a237a0 llvm::SmallVectorTemplateBase<llvm::SDNode*, true>::reserveForParamAndGetAddress(llvm::SDNode*&, unsigned long) /home/z30026696/opt/llvm/src/llvm-project/llvm/include/llvm/ADT/SmallVector.h:542:3
#15 0x0000000001a1d364 llvm::SmallVectorTemplateBase<llvm::SDNode*, true>::push_back(llvm::SDNode*) /home/z30026696/opt/llvm/src/llvm-project/llvm/include/llvm/ADT/SmallVector.h:566:14
#16 0x00000000035df55c (anonymous namespace)::DAGCombiner::AddToWorklist(llvm::SDNode*, bool) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:280:27
#17 0x00000000035df068 (anonymous namespace)::DAGCombiner::AddToWorklistWithUsers(llvm::SDNode*) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:207:5
#18 0x00000000035e3cb8 (anonymous namespace)::DAGCombiner::Run(llvm::CombineLevel) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1807:7
#19 0x000000000365ffd0 llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:27459:3
#20 0x00000000037b0f30 llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:924:61
#21 0x00000000037afc04 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:702:1
#22 0x00000000037b4248 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1705:33
#23 0x00000000037aebd4 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:483:7
#24 0x000000000194e594 (anonymous namespace)::AArch64DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp:57:0
#25 0x0000000002a4b8f4 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:33
#26 0x0000000003140a7c llvm::FPPassManager::runOnFunction(llvm::Function&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1435:40
#27 0x0000000003140c7c llvm::FPPassManager::runOnModule(llvm::Module&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1481:29
#28 0x0000000003141044 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1550:38
#29 0x000000000313ccfc llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:55
#30 0x00000000031417a4 llvm::legacy::PassManager::run(llvm::Module&) /home/z30026696/opt/llvm/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1677:17
#31 0x00000000016d9b5c compileModule(char**, llvm::LLVMContext&) /home/z30026696/opt/llvm/src/llvm-project/llvm/tools/llc/llc.cpp:759:66
#32 0x00000000016d7e2c main /home/z30026696/opt/llvm/src/llvm-project/llvm/tools/llc/llc.cpp:420:35
#33 0x0000ffffb819fbe0 __libc_start_main (/lib64/libc.so.6+0x20be0)
#34 0x00000000016d6e84 _start (../../../../build-x/bin/llc+0x16d6e84)
Aborted (core dumped)
```

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

Reply via email to