Go to file
Max Kazantsev 613af1f7ca [SCEV] Prove implications for SCEVUnknown Phis
This patch teaches SCEV how to prove implications for SCEVUnknown nodes that are Phis.
If we need to prove `Pred` for `LHS, RHS`, and `LHS` is a Phi with possible incoming values
`L1, L2, ..., LN`, then if we prove `Pred` for `(L1, RHS), (L2, RHS), ..., (LN, RHS)` then we can also
prove it for `(LHS, RHS)`. If both `LHS` and `RHS` are Phis from the same block, it is sufficient
to prove the predicate for values that come from the same predecessor block.

The typical case that it handles is that we sometimes need to prove that `Phi(Len, Len - 1) >= 0`
given that `Len > 0`. The new logic was added to `isImpliedViaOperations` and only uses it and
non-recursive reasoning to prove the facts we need, so it should not hurt compile time a lot.

Differential Revision: https://reviews.llvm.org/D44001
Reviewed By: anna

llvm-svn: 329150
2018-04-04 05:46:47 +00:00
clang Split test/Driver/darwin-sdkroot.c into two tests 2018-04-04 02:11:20 +00:00
clang-tools-extra [clangd] synthesize fix message when the diagnostic doesn't provide one. 2018-04-03 17:35:57 +00:00
compiler-rt [sanitizer] Remove empty Symbolizer PrepareForSandboxing 2018-04-03 18:07:22 +00:00
debuginfo-tests [Darwin] Specify DWARF 2/4 when running apple accelerator tests. 2018-02-26 20:56:45 +00:00
libclc remainder: Port from amd builtins 2018-03-19 01:01:10 +00:00
libcxx Fix undefined macro issue in locale tests; Try 2 2018-04-04 04:48:26 +00:00
libcxxabi [demangler] Fix a bug in r328464 found by oss-fuzz. 2018-03-26 15:34:36 +00:00
libunwind [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
lld Fix manifestinput-error.test on Windows 10. 2018-04-03 23:12:28 +00:00
lldb Added a BSD archive tool. 2018-04-02 17:20:21 +00:00
llgo
llvm [SCEV] Prove implications for SCEVUnknown Phis 2018-04-04 05:46:47 +00:00
openmp [OpenMP] enable bc file compilation using the latest clang 2018-04-03 15:01:34 +00:00
parallel-libs
polly Fix polly build after r328717 2018-03-28 19:56:26 +00:00
README.md

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.