hanchenye-llvm-project/llvm/lib
Hiroshi Yamauchi 9364432cec Unmerge GEPs to reduce register pressure on IndirectBr edges.
Summary:
GEP merging can sometimes increase the number of live values and register
pressure across control edges and cause performance problems particularly if the
increased register pressure results in spills.

This change implements GEP unmerging around an IndirectBr in certain cases to
mitigate the issue. This is in the CodeGenPrepare pass (after all the GEP
merging has happened.)

With this patch, the Python interpreter loop runs faster by ~5%.

Reviewers: sanjoy, hfinkel

Reviewed By: hfinkel

Subscribers: eastig, junbuml, llvm-commits

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

llvm-svn: 312930
2017-09-11 17:52:08 +00:00
..
Analysis [ScalarEvolution] Refactor forgetLoop() to improve performance 2017-09-11 15:44:20 +00:00
AsmParser Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
BinaryFormat [BinaryFormat] Fix out of bounds read. 2017-08-31 12:50:42 +00:00
Bitcode [Bitcode] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-09-07 23:28:24 +00:00
CodeGen Unmerge GEPs to reduce register pressure on IndirectBr edges. 2017-09-11 17:52:08 +00:00
DebugInfo [dwarfdump] Verify line table prologue 2017-09-08 09:48:51 +00:00
Demangle [ItaniumDemangle] Fix a exponential string copying bug 2017-05-28 23:24:52 +00:00
ExecutionEngine [ORC] Add a pair of ORC layers that forward object-layer operations via RPC. 2017-09-05 03:34:09 +00:00
FuzzMutate Move some CLI utils out of llvm-isel-fuzzer and into the library 2017-09-02 23:43:04 +00:00
Fuzzer Moving libFuzzer from LLVM to compiler-rt. 2017-08-21 23:25:12 +00:00
IR Revert "adding autoUpgrade support to broadcast[f|i]32x2 intrinsics" 2017-09-10 09:07:21 +00:00
IRReader
LTO LTO: Remove unnecessary Windows support code. 2017-09-07 00:55:00 +00:00
LineEditor
Linker Linker: Create a function declaration when moving a non-prevailing alias of function type. 2017-08-10 01:07:44 +00:00
MC [WebAssembly] Update relocation names to match spec 2017-09-01 17:32:01 +00:00
Object Object: Downgrade invalid weak externals from an assert fail to an llvm::Error when creating an irsymtab. 2017-09-07 01:33:52 +00:00
ObjectYAML [yaml2obj][ELF] Add support for symbol indexes greater than SHN_LORESERVE 2017-09-07 20:44:16 +00:00
Option Revert "Revert r311552: [Bash-autocompletion] Add support for static analyzer flags" 2017-08-29 00:09:31 +00:00
Passes [DivRempairs] add a pass to optimize div/rem pairs (PR31028) 2017-09-09 13:38:18 +00:00
ProfileData [Coverage] Build sorted and unique segments 2017-09-08 18:44:50 +00:00
Support Don't call exit from cl::PrintHelpMessage. 2017-09-07 23:30:48 +00:00
TableGen Untabify. 2017-08-28 06:47:47 +00:00
Target [AMDGPU] Produce madak and madmk from the two-address pass 2017-09-11 17:13:57 +00:00
Testing Mark LLVMTestingSupport as not installed in LLVMBuild. 2017-06-19 22:01:50 +00:00
ToolDrivers [llvm-dlltool] Mention arm64 in the lists of architecture alternatives 2017-09-08 06:49:46 +00:00
Transforms Test commit 2017-09-10 08:31:22 +00:00
WindowsManifest Fix crbug 759265 by suppressing llvm mt warnings. 2017-09-06 01:50:36 +00:00
XRay [XRay][tools] Support new kinds of instrumentation map entries 2017-08-21 00:14:06 +00:00
CMakeLists.txt Moving libFuzzer from LLVM to compiler-rt. 2017-08-21 23:25:12 +00:00
LLVMBuild.txt Re-apply "Introduce FuzzMutate library" 2017-08-21 22:57:06 +00:00