llvm-project/llvm/lib
Max Kazantsev c01e47b43f [SCEV] Make computeExitLimit more simple and more powerful
Current implementation of `computeExitLimit` has a big piece of code
the only purpose of which is to prove that after the execution of this
block the latch will be executed. What it currently checks is actually a
subset of situations where the exiting block dominates latch.

This patch replaces all these checks for simple particular cases with
domination check over loop's latch which is the only necessary condition
of taking the exiting block into consideration. This change allows to
calculate exact loop taken count for simple loops like

  for (int i = 0; i < 100; i++) {
    if (cond) {...} else {...}
    if (i > 50) break;
    . . .
  }

Differential Revision: https://reviews.llvm.org/D44677
Reviewed By: efriedma

llvm-svn: 329047
2018-04-03 05:57:19 +00:00
..
Analysis [SCEV] Make computeExitLimit more simple and more powerful 2018-04-03 05:57:19 +00:00
AsmParser [SimplifyCFG] Create attribute for fuzzing-specific optimizations. 2018-03-22 17:07:51 +00:00
BinaryFormat Fix build broken by r328090 2018-03-21 12:18:03 +00:00
Bitcode [ThinLTO] Add an option to force summary call edges cold for debugging 2018-03-31 00:18:08 +00:00
CodeGen Align stubs for external and common global variables to pointer size. 2018-04-02 23:20:30 +00:00
DebugInfo [llvm-pdbutil] Add an export subcommand. 2018-04-02 18:35:21 +00:00
Demangle [demangler] Fix a bug in r328464 found by oss-fuzz. 2018-03-26 15:34:36 +00:00
ExecutionEngine [ORC] Create a new SymbolStringPool by default in ExecutionSession constructor. 2018-04-02 20:57:56 +00:00
FuzzMutate [llvm-opt-fuzzer] Add irce to the fuzzing options 2018-03-20 11:32:13 +00:00
Fuzzer [libFuzzer] Delete llvm/lib/Fuzzer 2017-10-16 20:48:19 +00:00
IR Fix header mismatch in DIBuilder Type APIs 2018-04-02 19:11:44 +00:00
IRReader LLParser: add an argument for overriding data layout and do not check alloca addr space 2018-01-30 22:32:39 +00:00
LTO Prevent data races in concurrent ThinLTO processes. 2018-03-30 21:35:42 +00:00
LineEditor
Linker [ThinLTO] Recommit of import global variables 2018-03-12 10:30:50 +00:00
MC Reapply "[DWARFv5] Emit file 0 to the line table." 2018-03-29 17:16:41 +00:00
Object [llvm-ar] Support multiple dashed options 2018-03-28 17:21:14 +00:00
ObjectYAML Reland "[DebugInfo] Support DWARF expressions in eh_frame" 2018-03-08 00:46:53 +00:00
Option [NFC] Replace iterators in PrintHelp with range-based for 2018-03-12 18:31:07 +00:00
Passes Fix Layering, move instrumentation transform headers into Instrumentation subdirectory 2018-03-23 22:11:06 +00:00
ProfileData Revert "Revert "[InstrProf] Support for external functions in text format."" 2018-03-22 21:26:52 +00:00
Support Remove HAVE_LIBPSAPI, HAVE_SHELL32. 2018-04-02 17:32:48 +00:00
TableGen TableGen: Remove redundant loop in ListInit::resolveReferences 2018-03-21 17:13:10 +00:00
Target bpf: fix incorrect SELECT_CC lowering 2018-04-03 03:56:37 +00:00
Testing Force #define GTEST_LANG_CXX11. 2017-10-27 21:12:28 +00:00
ToolDrivers [COFF] Keep the underscore on exported decorated stdcall functions in MSVC mode 2018-01-20 11:44:32 +00:00
Transforms [SLP] Fix issues with debug output in the SLP vectorizer. 2018-04-03 05:27:28 +00:00
WindowsManifest Fix bug 34608 by moving private header out of public header. 2017-09-14 23:01:13 +00:00
XRay [XRay] clarify error messages when parsing broken traces 2018-01-30 13:41:34 +00:00
CMakeLists.txt
LLVMBuild.txt