-
Notifications
You must be signed in to change notification settings - Fork 15.3k
Open
Description
Reproducer: https://godbolt.org/z/3jeTWxYdr
Testcase:
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-musl"
define <32 x i64> @backsmith_pure_3(<32 x i32> %shuffle.i71, i8 %call19, ptr %BS_VAR_7.i69) {
entry:
%conv.i72 = sext <32 x i32> %shuffle.i71 to <32 x i64>
%vecext.i = sext i8 %call19 to i64
%0 = insertelement <32 x i64> zeroinitializer, i64 %vecext.i, i64 0
%mul.i76 = mul <32 x i64> %0, %conv.i72
%vecext38.i79 = extractelement <32 x i64> %mul.i76, i64 0
%arrayidx39.i80 = getelementptr i16, ptr %BS_VAR_7.i69, i64 %vecext38.i79
store i16 0, ptr %arrayidx39.i80, align 2
%call3410 = tail call <2 x i8> @backsmith_snippet_1081()
%1 = load i16, ptr null, align 2
%conv4.i87 = zext i16 %1 to i64
%vecinit34.i88 = insertelement <32 x i64> %0, i64 %conv4.i87, i64 2
%mul.i89 = mul <32 x i64> %vecinit34.i88, %conv.i72
ret <32 x i64> %mul.i89
}
declare <2 x i8> @backsmith_snippet_1081(...)llc dumps:
Overran sorted position:
t36: i64 = add t22, t35
t22: i64,ch = CopyFromReg t0, Register:i64 %10
t35: i64 = shl t33, Constant:i64<1>
t33: i64 = extract_vector_elt t272, Constant:i64<0>
t272: v2i64 = AArch64ISD::SMULL t280, t118
t280: v2i32 = extract_subvector t278, Constant:i64<0>
t278: v4i32 = AArch64ISD::UZP1 t277, t276
t277: v4i32 = bitcast t157
t157: v2i64 = BUILD_VECTOR t68, Constant:i64<0>
t68: i64 = sign_extend_inreg t66, ValueType:ch:i8
t66: i64 = any_extend t20
t276: v4i32 = bitcast t233
t233: v2i64 = BUILD_VECTOR t63, Constant:i64<0>
t63: i64,ch = load<(load (s16) from `ptr null`), zext from i16> t48, Constant:i64<0>, undef:i64
t118: v2i32 = extract_subvector t4, Constant:i64<0>
t4: v4i32,ch = CopyFromReg t0, Register:v4i32 %1
Checking if this is due to cycles
Detected cycle in SelectionDAG
Offending node:
t48: ch,glue = callseq_end t47, TargetConstant:i64<0>, TargetConstant:i64<0>, t47:1
t47: ch,glue = AArch64ISD::CALL t42, TargetGlobalAddress:i64<ptr @backsmith_snippet_1081> 0, RegisterMask:Untyped
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: /opt/compiler-explorer/clang-assertions-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel -O1 <source>
1. Running pass 'Function Pass Manager' on module '<source>'.
2. Running pass 'AArch64 Instruction Selection' on function '@backsmith_pure_3'
#0 0x00000000041ba738 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x41ba738)
#1 0x00000000041b75e4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x00007cb182a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007cb182a969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x00007cb182a42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x00007cb182a287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x0000000003ec234f (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3ec234f)
#7 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#8 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#9 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#10 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#11 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#12 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#13 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#14 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#15 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#16 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#17 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#18 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#19 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#20 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#21 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#22 0x0000000003ec2171 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#23 0x0000000003ed3f6e llvm::checkForCycles(llvm::SDNode const*, llvm::SelectionDAG const*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3ed3f6e)
#24 0x0000000003ed4239 llvm::SelectionDAG::AssignTopologicalOrder() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3ed4239)
#25 0x0000000003e302d9 llvm::SelectionDAG::Legalize() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3e302d9)
#26 0x0000000003f4f992 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3f4f992)
#27 0x0000000003f52d18 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3f52d18)
#28 0x0000000003f5479c llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3f5479c)
#29 0x0000000003f3ff0f llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3f3ff0f)
#30 0x00000000030a6f09 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#31 0x00000000036f18f6 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x36f18f6)
#32 0x00000000036f1ca1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x36f1ca1)
#33 0x00000000036f250f llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x36f250f)
#34 0x00000000008f8d1f compileModule(char**, llvm::LLVMContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&) llc.cpp:0:0
#35 0x00000000007c5ec9 main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x7c5ec9)
#36 0x00007cb182a29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#37 0x00007cb182a29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#38 0x00000000008edfc5 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x8edfc5)
Program terminated with signal: SIGSEGV
Compiler returned: 139