[llvm] r314435 - [JumpThreading] Preserve DT and LVI across the pass
Friedman, Eli via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 29 13:19:27 PDT 2017
On 9/28/2017 10:24 AM, Evandro Menezes via llvm-commits wrote:
> Author: evandro
> Date: Thu Sep 28 10:24:40 2017
> New Revision: 314435
>
> URL: http://llvm.org/viewvc/llvm-project?rev=314435&view=rev
> Log:
> [JumpThreading] Preserve DT and LVI across the pass
>
> JumpThreading now preserves dominance and lazy value information across the
> entire pass. The pass manager is also informed of this preservation with
> the goal of DT and LVI being recalculated fewer times overall during
> compilation.
>
> This change prepares JumpThreading for enhanced opportunities; particularly
> those across loop boundaries.
>
> Patch by: Brian Rzycki <b.rzycki at samsung.com>,
> Sebastian Pop <s.pop at samsung.com>
>
> Differential revision: https://reviews.llvm.org/D37528
It looks like this is causing an assertion failure on the polly aosp
buildbot
(http://lab.llvm.org:8011/builders/aosp-O3-polly-before-vectorizer-unprofitable/builds/266/steps/build-aosp/logs/stdio):
clang:
/var/lib/buildbot/slaves/hexagon-build-03/aosp/llvm.src/include/llvm/Support/GenericDomTreeConstruction.h:906:
static void
llvm::DomTreeBuilder::SemiNCAInfo<llvm::DominatorTreeBase<llvm::BasicBlock,
false> >::DeleteEdge(DomTreeT &, const BatchUpdatePtr, const NodePtr,
const NodePtr) [DomTreeT = llvm::DominatorTreeBase<llvm::BasicBlock,
false>]: Assertion `!IsSuccessor(To, From) && "Deleted edge still exists
in the CFG!"' failed. #0 0x00000000014f6fc4
PrintStackTraceSignalHandler(void*) (llvm.inst/bin/clang+0x14f6fc4) #1
0x00000000014f72d6 SignalHandler(int) (llvm.inst/bin/clang+0x14f72d6) #2
0x00007f694afddd10 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x10d10) #3 0x00007f6949bbb267
gsignal
/build/buildd/glibc-2.21/signal/../sysdeps/unix/sysv/linux/raise.c:55:0
#4 0x00007f6949bbceca abort /build/buildd/glibc-2.21/stdlib/abort.c:91:0
#5 0x00007f6949bb403d __assert_fail_base
/build/buildd/glibc-2.21/assert/assert.c:92:0 #6 0x00007f6949bb40f2
(/lib/x86_64-linux-gnu/libc.so.6+0x2e0f2) #7 0x000000000104a1dc
(llvm.inst/bin/clang+0x104a1dc) #8 0x0000000001357fd9
llvm::JumpThreadingPass::ProcessBlock(llvm::BasicBlock*)
(llvm.inst/bin/clang+0x1357fd9) #9 0x0000000001356e6e
llvm::JumpThreadingPass::runImpl(llvm::Function&,
llvm::TargetLibraryInfo*, llvm::LazyValueInfo*, llvm::AAResults*,
llvm::DominatorTree*, bool, std::unique_ptr<llvm::BlockFrequencyInfo,
std::default_delete<llvm::BlockFrequencyInfo> >,
std::unique_ptr<llvm::BranchProbabilityInfo,
std::default_delete<llvm::BranchProbabilityInfo> >)
(llvm.inst/bin/clang+0x1356e6e) #10 0x0000000001363c49 (anonymous
namespace)::JumpThreading::runOnFunction(llvm::Function&)
(llvm.inst/bin/clang+0x1363c49) #11 0x00000000010a53c4
llvm::FPPassManager::runOnFunction(llvm::Function&)
(llvm.inst/bin/clang+0x10a53c4) #12 0x00000000031f7376 (anonymous
namespace)::CGPassManager::runOnModule(llvm::Module&)
(llvm.inst/bin/clang+0x31f7376) #13 0x00000000010a5b05
llvm::legacy::PassManagerImpl::run(llvm::Module&)
(llvm.inst/bin/clang+0x10a5b05) #14 0x0000000001688beb
clang::EmitBackendOutput(clang::DiagnosticsEngine&,
clang::HeaderSearchOptions const&, clang::CodeGenOptions const&,
clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout
const&, llvm::Module*, clang::BackendAction,
std::unique_ptr<llvm::raw_pwrite_stream,
std::default_delete<llvm::raw_pwrite_stream> >)
(llvm.inst/bin/clang+0x1688beb) #15 0x0000000001ed7672
clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)
(llvm.inst/bin/clang+0x1ed7672) #16 0x0000000002195235
clang::ParseAST(clang::Sema&, bool, bool)
(llvm.inst/bin/clang+0x2195235) #17 0x0000000001a75628
clang::FrontendAction::Execute() (llvm.inst/bin/clang+0x1a75628) #18
0x0000000001a37181
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(llvm.inst/bin/clang+0x1a37181) #19 0x0000000001b06501
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(llvm.inst/bin/clang+0x1b06501) #20 0x000000000080e433
cc1_main(llvm::ArrayRef<char const*>, char const*, void*)
(llvm.inst/bin/clang+0x80e433) #21 0x000000000080c997 main
(llvm.inst/bin/clang+0x80c997) #22 0x00007f6949ba6a40 __libc_start_main
/build/buildd/glibc-2.21/csu/libc-start.c:323:0 #23 0x0000000000809479
_start (llvm.inst/bin/clang+0x809479)
I'll try to come up with a reduced testcase this afternoon.
-Eli
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170929/04123204/attachment.html>
More information about the llvm-commits
mailing list