1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/lib
Nirav Dave bbd897ed7a Avoid needing to walk out legalization tables. NFCI.
Relanding after fixing expensive check from modifying tables.

To avoid redundant work, during DAG legalization we keep tables
mapping pre-legalized SDValues to post-legalized SDValues and a
SDValue-to-SDValue map to enable fast node replacements. However, as
the keys are nodes which may be reused it is possible that an entry in
a table refers to a now deleted node N (that should have been renamed
by the value replacement map) while a new node N' exists. If N' is
then replaced that entry would be wrong. Previously we avoided this by
when potentially violating this property, walking every table and
updating all node pointers. This is very expensive but hopefully rare
occurance.

This patch assigns each instance of a SDValue used in legalization a
unique id and uses these ids in the legalization tables. This avoids
any such aliasing issue, avoiding the full table search and allowing
more aggressive incremental table pruning.

In some cases this is a 1000x speedup to compilation.

Reviewers: jyknight, echristo, bogner, tra

Reviewed By: bogner

Subscribers: dberris, grandinj, hiraditya, llvm-commits

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

llvm-svn: 334880
2018-06-16 02:51:29 +00:00
..
Analysis Revert "[SCEV] Use LLVM_MARK_AS_BITMASK_ENUM in SCEV." -- breaks MSVC builds. 2018-06-16 00:14:10 +00:00
AsmParser [ThinLTO] Print module summary index to assembly 2018-05-26 02:34:13 +00:00
BinaryFormat [WebAssembly] Move toString helpers to BinaryFormat 2018-05-14 22:42:07 +00:00
Bitcode [ThinLTO] Rename index IsAnalysis flag to HaveGVs (NFC) 2018-06-06 22:22:01 +00:00
CodeGen Avoid needing to walk out legalization tables. NFCI. 2018-06-16 02:51:29 +00:00
DebugInfo [DWARF/AccelTable] Remove getDIESectionOffset for DWARF v5 entries 2018-06-13 08:14:27 +00:00
Demangle Move Compiler.h from Demangle back to Support 2018-06-04 22:53:38 +00:00
ExecutionEngine [PPC64] Support "symbol@high" and "symbol@higha" symbol modifers. 2018-06-15 19:47:11 +00:00
Fuzzer
FuzzMutate
IR [X86] Lowering sqrt intrinsics to native IR 2018-06-15 18:05:24 +00:00
IRReader
LineEditor
Linker
LTO LTO: Keep file handles open for memory mapped files. 2018-06-13 18:03:14 +00:00
MC [PowerPC] Add support for high and higha symbol modifiers on tls modifers. 2018-06-15 19:47:16 +00:00
Object [MachO] Add out-of-bounds check to MachOObjectFile.cpp 2018-06-04 17:01:20 +00:00
ObjectYAML [MC] Add assembler support for .cg_profile. 2018-06-02 16:33:01 +00:00
Option Re-revert "[Option] Fix PR37006 prefix choice in findNearest" 2018-05-19 16:21:01 +00:00
Passes [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule 2018-05-30 02:46:45 +00:00
ProfileData [NFC] Change sample profile format enum name SPF_Raw_Binary to SPF_Binary. 2018-06-12 05:53:49 +00:00
Support Avoid copying PrettyStackTrace messages an extra time on Apple OSs 2018-06-15 16:35:31 +00:00
TableGen TableGen: Streamline the semantics of NAME 2018-06-04 14:26:05 +00:00
Target [globalisel][tablegen] Add support for C++ predicates on PatFrags and use it to support BFC on ARM. 2018-06-15 23:13:43 +00:00
Testing
ToolDrivers
Transforms [SanitizerCoverage] Add associated metadata to pc-tables. 2018-06-15 20:12:58 +00:00
WindowsManifest
XRay
CMakeLists.txt
LLVMBuild.txt