[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