[llvm-bugs] [Bug 39398] New: [DAG] Assertion `N->getOpcode() != ISD::DELETED_NODE && "Deleted Node added to Worklist"' failed.
via llvm-bugs
llvm-bugs at lists.llvm.org
Tue Oct 23 00:41:24 PDT 2018
https://bugs.llvm.org/show_bug.cgi?id=39398
Bug ID: 39398
Summary: [DAG] Assertion `N->getOpcode() != ISD::DELETED_NODE
&& "Deleted Node added to Worklist"' failed.
Product: new-bugs
Version: trunk
Hardware: PC
OS: Windows NT
Status: NEW
Severity: enhancement
Priority: P
Component: new bugs
Assignee: unassignedbugs at nondot.org
Reporter: max.kazantsev at azul.com
CC: llvm-bugs at lists.llvm.org
The following test fails when llc runs on it:
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1"
define void @pluto(i8* %arg, float* %arg1) #0 {
bb:
%tmp = getelementptr inbounds i8, i8* %arg, i64 72
%tmp2 = bitcast i8* %tmp to float*
%tmp3 = load float, float* %tmp2, align 4
%tmp4 = load float, float* %arg1
%tmp5 = fadd float %tmp4, 0.000000e+00
%tmp6 = fcmp ogt float %tmp5, 0.000000e+00
%tmp7 = select i1 %tmp6, i64 9223372036854775807, i64 -9223372036854775808
%tmp8 = insertelement <4 x i64> undef, i64 %tmp7, i32 0
%tmp9 = shufflevector <4 x i64> %tmp8, <4 x i64> undef, <4 x i32>
zeroinitializer
br label %bb10
bb10: ; preds = %bb10, %bb
%tmp11 = phi i32 [ 0, %bb ], [ %tmp30, %bb10 ]
%tmp12 = phi <4 x i32> [ <i32 9, i32 8, i32 7, i32 6>, %bb ], [ %tmp31, %bb10
]
%tmp13 = phi <4 x i64> [ zeroinitializer, %bb ], [ %tmp28, %bb10 ]
%tmp14 = phi <4 x i64> [ zeroinitializer, %bb ], [ %tmp29, %bb10 ]
%tmp15 = phi <4 x i32> [ <i32 3, i32 4, i32 5, i32 6>, %bb ], [ %tmp32, %bb10
]
%tmp16 = add <4 x i32> %tmp12, <i32 -4, i32 -4, i32 -4, i32 -4>
%tmp17 = add <4 x i32> %tmp15, <i32 4, i32 4, i32 4, i32 4>
%tmp18 = zext <4 x i32> %tmp12 to <4 x i64>
%tmp19 = zext <4 x i32> %tmp16 to <4 x i64>
%tmp20 = xor <4 x i64> %tmp18, <i64 -1, i64 -1, i64 -1, i64 -1>
%tmp21 = xor <4 x i64> %tmp19, <i64 -1, i64 -1, i64 -1, i64 -1>
%tmp22 = icmp ugt <4 x i32> %tmp15, <i32 12, i32 12, i32 12, i32 12>
%tmp23 = icmp ugt <4 x i32> %tmp17, <i32 12, i32 12, i32 12, i32 12>
%tmp24 = mul <4 x i64> %tmp9, %tmp20
%tmp25 = mul <4 x i64> %tmp9, %tmp21
%tmp26 = select <4 x i1> %tmp22, <4 x i64> zeroinitializer, <4 x i64> %tmp24
%tmp27 = select <4 x i1> %tmp23, <4 x i64> zeroinitializer, <4 x i64> %tmp25
%tmp28 = add <4 x i64> %tmp13, %tmp26
%tmp29 = add <4 x i64> %tmp14, %tmp27
%tmp30 = add i32 %tmp11, 8
%tmp31 = add <4 x i32> %tmp12, <i32 -8, i32 -8, i32 -8, i32 -8>
%tmp32 = add <4 x i32> %tmp15, <i32 8, i32 8, i32 8, i32 8>
%tmp33 = icmp eq i32 %tmp30, 232
br i1 %tmp33, label %bb34, label %bb10
bb34: ; preds = %bb10
%tmp35 = add <4 x i64> %tmp29, %tmp28
%tmp36 = shufflevector <4 x i64> %tmp35, <4 x i64> undef, <4 x i32> <i32 2,
i32 3, i32 undef, i32 undef>
%tmp37 = add <4 x i64> %tmp35, %tmp36
%tmp38 = shufflevector <4 x i64> %tmp37, <4 x i64> undef, <4 x i32> <i32 1,
i32 undef, i32 undef, i32 undef>
%tmp39 = add <4 x i64> %tmp37, %tmp38
%tmp40 = extractelement <4 x i64> %tmp39, i32 0
%tmp41 = trunc i64 %tmp40 to i32
%tmp42 = sitofp i32 %tmp41 to float
%tmp43 = fsub float %tmp3, %tmp42
store float %tmp43, float* %arg1, align 4
ret void
}
The failure looks like this:
llc: /home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:178:
void {anonymous}::DAGCombiner::AddToWorklist(llvm::SDNode*): Assertion
`N->getOpcode() != ISD::DELETED_NODE && "Deleted Node added to Worklist"'
failed.
Stack dump:
0. Program arguments: /home/mkazantsev/work/llvm/build/buildRA/bin/llc
./test.ll
1. Running pass 'Function Pass Manager' on module './test.ll'.
2. Running pass 'X86 DAG->DAG Instruction Selection' on function '@pluto'
#0 0x00007f560b939d2a llvm::sys::PrintStackTrace(llvm::raw_ostream&)
/home/mkazantsev/work/llvm/lib/Support/Unix/Signals.inc:499:0
#1 0x00007f560b9382ba llvm::sys::RunSignalHandlers()
/home/mkazantsev/work/llvm/lib/Support/Signals.cpp:67:0
#2 0x00007f560b9383f5 SignalHandler(int)
/home/mkazantsev/work/llvm/lib/Support/Unix/Signals.inc:358:0
#3 0x00007f560ac11390 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#4 0x00007f5609fca428 gsignal
/build/glibc-Cl5G7W/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
#5 0x00007f5609fcc02a abort /build/glibc-Cl5G7W/glibc-2.23/stdlib/abort.c:91:0
#6 0x00007f5609fc2bd7 __assert_fail_base
/build/glibc-Cl5G7W/glibc-2.23/assert/assert.c:92:0
#7 0x00007f5609fc2c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
#8 0x00007f560b6ff43c llvm::SmallVectorTemplateBase<(anonymous
namespace)::DAGCombiner::MemOpLink, false>::grow(unsigned long)
(.constprop.774)
/home/mkazantsev/work/llvm/include/llvm/ADT/SmallVector.h:240:0
#9 0x00007f560be46b31 LookupBucketFor<llvm::SDNode*>
/home/mkazantsev/work/llvm/include/llvm/ADT/DenseMap.h:592:0
#10 0x00007f560be46b31 LookupBucketFor<llvm::SDNode*>
/home/mkazantsev/work/llvm/include/llvm/ADT/DenseMap.h:632:0
#11 0x00007f560be46b31 try_emplace<unsigned int>
/home/mkazantsev/work/llvm/include/llvm/ADT/DenseMap.h:213:0
#12 0x00007f560be46b31 llvm::DenseMapBase<llvm::DenseMap<llvm::SDNode*,
unsigned int, llvm::DenseMapInfo<llvm::SDNode*>,
llvm::detail::DenseMapPair<llvm::SDNode*, unsigned int> >, llvm::SDNode*,
unsigned int, llvm::DenseMapInfo<llvm::SDNode*>,
llvm::detail::DenseMapPair<llvm::SDNode*, unsigned int>
>::insert(std::pair<llvm::SDNode*, unsigned int>&&)
/home/mkazantsev/work/llvm/include/llvm/ADT/DenseMap.h:204:0
#13 0x00007f560be46b31 AddToWorklist
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:185:0
#14 0x00007f560be46b31
llvm::TargetLowering::DAGCombinerInfo::AddToWorklist(llvm::SDNode*)
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:639:0
#15 0x00007f560d80a9ea combinePMULDQ(llvm::SDNode*, llvm::SelectionDAG&,
llvm::TargetLowering::DAGCombinerInfo&)
/home/mkazantsev/work/llvm/lib/Target/X86/X86ISelLowering.cpp:40388:0
#16 0x00007f560d8cdd38
llvm::X86TargetLowering::PerformDAGCombine(llvm::SDNode*,
llvm::TargetLowering::DAGCombinerInfo&) const
/home/mkazantsev/work/llvm/lib/Target/X86/X86ISelLowering.cpp:40522:0
#17 0x00007f560be7c330 (anonymous
namespace)::DAGCombiner::combine(llvm::SDNode*)
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1624:0
#18 0x00007f560be7da29 Run
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1460:0
#19 0x00007f560be7da29 llvm::SelectionDAG::Combine(llvm::CombineLevel,
llvm::AAResults*, llvm::CodeGenOpt::Level)
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:19061:0
#20 0x00007f560bfe2cdd ~TimeRegion
/home/mkazantsev/work/llvm/include/llvm/Support/Timer.h:153:0
#21 0x00007f560bfe2cdd ~NamedRegionTimer
/home/mkazantsev/work/llvm/include/llvm/Support/Timer.h:161:0
#22 0x00007f560bfe2cdd llvm::SelectionDAGISel::CodeGenAndEmitDAG()
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:842:0
#23 0x00007f560bfe6ddc
llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&)
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1752:0
#24 0x00007f560bfe8937
llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&)
(.part.1046)
/home/mkazantsev/work/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:470:0
#25 0x00007f560d801b30 (anonymous
namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&)
/home/mkazantsev/work/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:187:0
#26 0x00007f560bc223b2
llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.88)
/home/mkazantsev/work/llvm/lib/CodeGen/MachineFunctionPass.cpp:74:0
#27 0x00007f560ba4930f llvm::FPPassManager::runOnFunction(llvm::Function&)
/home/mkazantsev/work/llvm/lib/IR/LegacyPassManager.cpp:1645:0
#28 0x00007f560ba4953c llvm::FPPassManager::runOnModule(llvm::Module&)
/home/mkazantsev/work/llvm/include/llvm/ADT/ilist_node.h:67:0
#29 0x00007f560ba49c6b runOnModule
/home/mkazantsev/work/llvm/lib/IR/LegacyPassManager.cpp:1745:0
#30 0x00007f560ba49c6b llvm::legacy::PassManagerImpl::run(llvm::Module&)
/home/mkazantsev/work/llvm/lib/IR/LegacyPassManager.cpp:1857:0
#31 0x000000000040fef6 compileModule
/home/mkazantsev/work/llvm/tools/llc/llc.cpp:600:0
#32 0x000000000040fef6 main /home/mkazantsev/work/llvm/tools/llc/llc.cpp:351:0
#33 0x00007f5609fb5830 __libc_start_main
/build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:325:0
#34 0x0000000000410368 _start
(/home/mkazantsev/work/llvm/build/buildRA/bin/llc+0x410368)
Aborted (core dumped)
Revert of the following patch makes the failure gone:
https://reviews.llvm.org/rL343922
-----------------------------------------------------------
[X86] combinePMULDQ - add op back to worklist if SimplifyDemandedBits succeeds
on either operand
Prevents missing other simplifications that may occur deep in the operand chain
where CommitTargetLoweringOpt won't add the PMULDQ back to the worklist itself
-----------------------------------------------------------
The patch itself seems relevant to the failed logic and should be the root
cause.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20181023/60a1bd73/attachment-0001.html>
More information about the llvm-bugs
mailing list