1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/lib
Max Kazantsev 1f510bd4c6 [SCEV] Prohibit SCEV transformations for huge SCEVs
Currently SCEV attempts to limit transformations so that they do not work with
big SCEVs (that may take almost infinite compile time). But for this, it uses heuristics
such as recursion depth and number of operands, which do not give us a guarantee
that we don't actually have big SCEVs. This situation is still possible, though it is not
likely to happen. However, the bug PR33494 showed a bunch of simple corner case
tests where we still produce huge SCEVs, even not reaching big recursion depth etc.

This patch introduces a concept of 'huge' SCEVs. A SCEV is huge if its expression
size (intoduced in D35989) exceeds some threshold value. We prohibit optimizing
transformations if any of SCEVs we are dealing with is huge. This gives us a reliable
check that we don't spend too much time working with them.

As the next step, we can possibly get rid of old limiting mechanisms, such as recursion
depth thresholds.

Differential Revision: https://reviews.llvm.org/D35990
Reviewed By: reames

llvm-svn: 352728
2019-01-31 06:19:25 +00:00
..
Analysis [SCEV] Prohibit SCEV transformations for huge SCEVs 2019-01-31 06:19:25 +00:00
AsmParser Revert "[Sanitizers] UBSan unreachable incompatible with ASan in the presence of noreturn calls" 2019-01-24 18:04:21 +00:00
BinaryFormat Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Bitcode Revert "[Sanitizers] UBSan unreachable incompatible with ASan in the presence of noreturn calls" 2019-01-24 18:04:21 +00:00
CodeGen Revert "Reapply "[CGP] Check for existing inttotpr before creating new one"" 2019-01-31 03:28:46 +00:00
DebugInfo [NativePDB] Fix access to both old & new fpo data entries from dbi stream 2019-01-30 10:40:45 +00:00
Demangle Add missing include (cstdlib) to Demangle.h 2019-01-22 19:18:18 +00:00
ExecutionEngine Add namespace to some types. 2019-01-31 04:33:11 +00:00
Fuzzer
FuzzMutate Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IR Add a 'dynamic' parameter to the objectsize intrinsic 2019-01-30 20:34:35 +00:00
IRReader Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LineEditor Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Linker Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LTO Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MC [WebAssembly] MC: Use WritePatchableLEB helper function. NFC. 2019-01-30 22:47:35 +00:00
MCA [MC][X86] Correctly model additional operand latency caused by transfer delays from the integer to the floating point unit. 2019-01-23 16:35:07 +00:00
Object [WebAssembly] Add missing SymbolRef update from rL352551 2019-01-30 00:15:48 +00:00
ObjectYAML [COFF] Add new relocation types. 2019-01-27 19:53:36 +00:00
Option Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
OptRemarks Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
Passes [HotColdSplit] Move splitting earlier in the pipeline 2019-01-24 18:55:49 +00:00
ProfileData Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Support Revert "Add support for prefix-only CLI options" 2019-01-27 09:02:46 +00:00
TableGen [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
Target GlobalISel: Handle odd splits in fewerElementsVector for load/store 2019-01-31 02:46:05 +00:00
Testing Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TextAPI Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ToolDrivers Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Transforms Add a 'dynamic' parameter to the objectsize intrinsic 2019-01-30 20:34:35 +00:00
WindowsManifest Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
XRay Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [llvm-mca] Move llvm-mca library to llvm/lib/MCA. 2018-12-17 08:08:31 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00