llvm/lib
Michael Zolotukhin 805e09d964 [SCEV] createAddRecFromPHI: Optimize for the most common case.
Summary:
The existing implementation creates a symbolic SCEV expression every
time we analyze a phi node and then has to remove it, when the analysis
is finished. This is very expensive, and in most of the cases it's also
unnecessary. According to the data I collected, ~60-70% of analyzed phi
nodes (measured on SPEC) have the following form:
  PN = phi(Start, OP(Self, Constant))
Handling such cases separately significantly speeds this up.

Reviewers: sanjoy, pete

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302096 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-03 23:53:38 +00:00
..
Analysis [SCEV] createAddRecFromPHI: Optimize for the most common case. 2017-05-03 23:53:38 +00:00
AsmParser AMDGPU: Add AMDGPU_HS calling convention 2017-05-02 15:41:10 +00:00
Bitcode Bitcode: Simplify how we enumerate summaries in the index. NFCI. 2017-05-02 17:48:39 +00:00
CodeGen [KnownBits] Add zext, sext, and trunc methods to KnownBits 2017-05-03 22:07:25 +00:00
DebugInfo clang-format and restyle DWARFFormValue before working on it. NFC 2017-05-03 21:53:21 +00:00
Demangle Add support for demangling C++11 thread_local variables. 2017-01-31 15:56:36 +00:00
ExecutionEngine [bpf] add relocation support 2017-05-03 17:30:56 +00:00
Fuzzer [libFuzzer] exit without running atexit handlers in libfuzzer's crash handler 2017-05-03 20:31:19 +00:00
IR [IR] Abstract away ArgNo+1 attribute indexing as much as possible 2017-05-03 18:17:31 +00:00
IRReader Timer: Track name and description. 2016-11-18 19:43:18 +00:00
LibDriver Fix some ArgList uses after API change in r300135. 2017-04-12 23:43:58 +00:00
LineEditor
Linker [Linker] Provide callback for internalization 2017-03-13 18:08:11 +00:00
LTO Bitcode: Make the summary reader responsible for merging. NFCI. 2017-05-01 22:04:36 +00:00
MC [bpf] add relocation support 2017-05-03 17:30:56 +00:00
Object Add llvm::object::getELFSectionTypeName(). 2017-05-02 14:04:52 +00:00
ObjectYAML [WebAssembly] Allow for signed relocation addends 2017-04-26 00:02:31 +00:00
Option ArgList: cache index ranges containing arguments with each ID 2017-04-12 23:19:51 +00:00
Passes [PM/LoopUnswitch] Introduce a new, simpler loop unswitch pass. 2017-04-27 18:45:20 +00:00
ProfileData [ProfileData] Unify getInstrProf*SectionName helpers 2017-04-15 00:09:57 +00:00
Support [AArch64] Fix variable name ambiguity in r302078. 2017-05-03 20:51:34 +00:00
TableGen Use print() instead of dump() in code 2017-01-28 02:47:46 +00:00
Target Mark functions as not having CFI once we finalize an x86 stack frame 2017-05-03 23:13:42 +00:00
Transforms [InstCombine][KnownBits] Use KnownBits better to detect nsw adds 2017-05-03 23:22:46 +00:00
XRay [XRay] - Fix spelling error to test commit access. 2017-04-06 03:32:01 +00:00
CMakeLists.txt [XRay] Define the library for XRay trace logs 2017-01-11 06:39:09 +00:00
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00