<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - LLVM Assertion Error/Segfault in GVN"
href="https://bugs.llvm.org/show_bug.cgi?id=46054">46054</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>LLVM Assertion Error/Segfault in GVN
</td>
</tr>
<tr>
<th>Product</th>
<td>tools
</td>
</tr>
<tr>
<th>Version</th>
<td>7.0
</td>
</tr>
<tr>
<th>Hardware</th>
<td>All
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>opt
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>wmoses@mit.edu
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>LLVM 7 has an internal error when running GVN on the following minimal test
case. This does not occur on LLVM 8, but results in major issues for a system
using LLVM 7.
$ opt -gvn fft-raw.ll
; ModuleID = 'fft-raw.ll'
source_filename = "fft.cpp"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define void @llvmerr(double* %data) {
entry:
%luc = tail call noalias nonnull i64* @data()
store i64 1, i64* %luc, !invariant.group !0
%QQ = load i64, i64* %luc, !invariant.group !0
call void @fn(i64 %QQ)
br i1 true, label %A, label %B
A: ; preds = %loop
br label %B
B: ; preds = %A, %loop
%QQ.1 = load i64, i64* %luc, !invariant.group !0
call void @fn(i64 %QQ.1)
ret void
}
declare void @fn(i64)
declare noalias i64* @data()
!0 = distinct !{}
While deleting: i64 %QQ.1
An asserting value handle still pointed to this value!
UNREACHABLE executed at /home/wmoses/git/Enzyme/llvm/lib/IR/Value.cpp:887!
Stack dump:
0. Program arguments: /home/wmoses/git/Enzyme/build/bin/opt -gvn -S
fft-raw.ll
1. Running pass 'Function Pass Manager' on module 'fft-raw.ll'.
2. Running pass 'Global Value Numbering' on function '@llvmerr'
#0 0x0000559152e7e515 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
/home/wmoses/git/Enzyme/llvm/lib/Support/Unix/Signals.inc:490:0
#1 0x0000559152e7e5a8 PrintStackTraceSignalHandler(void*)
/home/wmoses/git/Enzyme/llvm/lib/Support/Unix/Signals.inc:554:0
#2 0x0000559152e7c2e4 llvm::sys::RunSignalHandlers()
/home/wmoses/git/Enzyme/llvm/lib/Support/Signals.cpp:67:0
#3 0x0000559152e7df38 SignalHandler(int)
/home/wmoses/git/Enzyme/llvm/lib/Support/Unix/Signals.inc:353:0
#4 0x00007f24b35c6890 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x12890)
#5 0x00007f24b2277e97 gsignal
/build/glibc-OTsEL5/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#6 0x00007f24b2279801 abort /build/glibc-OTsEL5/glibc-2.27/stdlib/abort.c:81:0
#7 0x0000559152de4ff4 bindingsErrorHandler(void*,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, bool) /home/wmoses/git/Enzyme/llvm/lib/Support/ErrorHandling.cpp:231:0
#8 0x000055915269b8fc llvm::ValueHandleBase::ValueIsDeleted(llvm::Value*)
/home/wmoses/git/Enzyme/llvm/lib/IR/Value.cpp:890:0
#9 0x0000559152697dd1 llvm::Value::~Value()
/home/wmoses/git/Enzyme/llvm/lib/IR/Value.cpp:77:0
#10 0x0000559151de67fc llvm::User::~User()
/home/wmoses/git/Enzyme/llvm/include/llvm/IR/User.h:95:0
#11 0x00005591525c96da llvm::Instruction::~Instruction()
/home/wmoses/git/Enzyme/llvm/lib/IR/Instruction.cpp:49:0
#12 0x000055915269cbcc llvm::UnaryInstruction::~UnaryInstruction()
/home/wmoses/git/Enzyme/llvm/include/llvm/IR/InstrTypes.h:280:0
#13 0x000055915269cbe8 llvm::LoadInst::~LoadInst()
/home/wmoses/git/Enzyme/llvm/include/llvm/IR/Instructions.h:168:0
#14 0x00005591526987df llvm::Value::deleteValue()
/home/wmoses/git/Enzyme/llvm/include/llvm/IR/Instruction.def:153:0
#15 0x00005591521e12d0
llvm::ilist_alloc_traits<llvm::Instruction>::deleteNode(llvm::Instruction*)
/home/wmoses/git/Enzyme/llvm/include/llvm/IR/Instruction.h:711:0
#16 0x00005591521e1d3f llvm::iplist_impl<llvm::simple_ilist<llvm::Instruction>,
llvm::SymbolTableListTraits<llvm::Instruction>
<span class="quote">>::erase(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction,</span >
true, false, void>, false, false>)
/home/wmoses/git/Enzyme/llvm/include/llvm/ADT/ilist.h:269:0
#17 0x00005591525c97ef llvm::Instruction::eraseFromParent()
/home/wmoses/git/Enzyme/llvm/lib/IR/Instruction.cpp:70:0
#18 0x0000559152b29862 llvm::GVN::processBlock(llvm::BasicBlock*)
/home/wmoses/git/Enzyme/llvm/lib/Transforms/Scalar/GVN.cpp:2109:0
#19 0x0000559152b2ad67 llvm::GVN::iterateOnFunction(llvm::Function&)
/home/wmoses/git/Enzyme/llvm/lib/Transforms/Scalar/GVN.cpp:2416:0
#20 0x0000559152b29406 llvm::GVN::runImpl(llvm::Function&,
llvm::AssumptionCache&, llvm::DominatorTree&, llvm::TargetLibraryInfo const&,
llvm::AAResults&, llvm::MemoryDependenceResults*, llvm::LoopInfo*,
llvm::OptimizationRemarkEmitter*)
/home/wmoses/git/Enzyme/llvm/lib/Transforms/Scalar/GVN.cpp:2046:0
#21 0x0000559152b2d898 llvm::gvn::GVNLegacyPass::runOnFunction(llvm::Function&)
/home/wmoses/git/Enzyme/llvm/lib/Transforms/Scalar/GVN.cpp:2635:0
#22 0x000055915260c74a llvm::FPPassManager::runOnFunction(llvm::Function&)
/home/wmoses/git/Enzyme/llvm/lib/IR/LegacyPassManager.cpp:1586:0
#23 0x000055915260c90f llvm::FPPassManager::runOnModule(llvm::Module&)
/home/wmoses/git/Enzyme/llvm/lib/IR/LegacyPassManager.cpp:1609:0
#24 0x000055915260cce2 (anonymous
namespace)::MPPassManager::runOnModule(llvm::Module&)
/home/wmoses/git/Enzyme/llvm/lib/IR/LegacyPassManager.cpp:1669:0
#25 0x000055915260d46c llvm::legacy::PassManagerImpl::run(llvm::Module&)
/home/wmoses/git/Enzyme/llvm/lib/IR/LegacyPassManager.cpp:1774:0
#26 0x000055915260d69b llvm::legacy::PassManager::run(llvm::Module&)
/home/wmoses/git/Enzyme/llvm/lib/IR/LegacyPassManager.cpp:1806:0
#27 0x00005591517cad7b main
/home/wmoses/git/Enzyme/llvm/tools/opt/opt.cpp:827:0
#28 0x00007f24b225ab97 __libc_start_main
/build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:344:0
#29 0x000055915178ee8a _start (/home/wmoses/git/Enzyme/build/bin/opt+0xe9be8a)</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>