Go to file
Brian M. Rzycki 9b7ae23256 [JumpThreading] Preservation of DT and LVI across the pass
Summary:
See D37528 for a previous (non-deferred) version of this
patch and its description.

Preserves dominance in a deferred manner using a new class
DeferredDominance. This reduces the performance impact of
updating the DominatorTree at every edge insertion and
deletion. A user may call DDT->flush() within JumpThreading
for an up-to-date DT. This patch currently has one flush()
at the end of runImpl() to ensure DT is preserved across
the pass.

LVI is also preserved to help subsequent passes such as
CorrelatedValuePropagation. LVI is simpler to maintain and
is done immediately (not deferred). The code to perform the
preversation was minimally altered and simply marked as
preserved for the PassManager to be informed.

This extends the analysis available to JumpThreading for
future enhancements such as threading across loop headers.

Reviewers: dberlin, kuhar, sebpop

Reviewed By: kuhar, sebpop

Subscribers: mgorny, dmgreen, kuba, rnk, rsmith, hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D40146

llvm-svn: 322401
2018-01-12 21:06:48 +00:00
clang Refactor handling of signext/zeroext in ABIArgInfo 2018-01-12 20:08:16 +00:00
clang-tools-extra [clangd] Code completion uses Sema for NS-level things in the current file. 2018-01-12 18:30:08 +00:00
compiler-rt Correct the setitimer interceptor on NetBSD 2018-01-12 20:45:56 +00:00
debuginfo-tests [debuginfo-tests] Support moving debuginfo-tests to llvm/projects 2017-12-12 16:54:20 +00:00
libclc configure.py: Add gfx900 (Vega, Raven) 2017-11-27 11:14:06 +00:00
libcxx Add error code handling to remove_all test 2018-01-12 05:02:06 +00:00
libcxxabi Update version to 7.0.0svn 2018-01-03 15:42:34 +00:00
libunwind [libunwind] Set up .arcconfig to point to new Diffusion UNW repository 2018-01-10 22:20:03 +00:00
lld [WebAssembly] Create synthetic __wasm_call_ctors function 2018-01-12 18:35:13 +00:00
lldb Fix Breakpoint::RemoveInvalidLocations to fix the exec testcase. 2018-01-12 03:03:23 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm [JumpThreading] Preservation of DT and LVI across the pass 2018-01-12 21:06:48 +00:00
openmp Fixed libomp static build broken by the commit rL322202. 2018-01-11 15:09:49 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [CMake] Use only keyword-version of target_link_library. NFC. 2018-01-12 16:09:18 +00:00
README.md Add an svn project to contain the files that appear at the root of the 2017-10-19 21:09:49 +00:00

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.