1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/lib/IR
Reid Kleckner 2a197a86b4 [IR] Lazily number instructions for local dominance queries
Essentially, fold OrderedBasicBlock into BasicBlock, and make it
auto-invalidate the instruction ordering when new instructions are
added. Notably, we don't need to invalidate it when removing
instructions, which is helpful when a pass mostly delete dead
instructions rather than transforming them.

The downside is that Instruction grows from 56 bytes to 64 bytes.  The
resulting LLVM code is substantially simpler and automatically handles
invalidation, which makes me think that this is the right speed and size
tradeoff.

The important change is in SymbolTableTraitsImpl.h, where the numbering
is invalidated. Everything else should be straightforward.

We probably want to implement a fancier re-numbering scheme so that
local updates don't invalidate the ordering, but I plan for that to be
future work, maybe for someone else.

Reviewed By: lattner, vsk, fhahn, dexonsmith

Differential Revision: https://reviews.llvm.org/D51664
2020-02-18 14:44:24 -08:00
..
AbstractCallSite.cpp [Attributor] Use abstract call sites to determine associated arguments 2019-12-31 01:33:22 -06:00
AsmWriter.cpp [Assembler] Emit summary index flags 2020-02-18 17:49:54 +03:00
AttributeImpl.h [NFC] Factor out function to detect if an attribute has an argument. 2020-02-03 22:27:24 +01:00
Attributes.cpp [NFC] Factor out function to detect if an attribute has an argument. 2020-02-03 22:27:24 +01:00
AutoUpgrade.cpp [X86] Correct the implementation of the avx512 masked fmsubadd autoupgrade code to not leave the negate unconnected. 2020-02-07 15:27:05 -08:00
BasicBlock.cpp [IR] Lazily number instructions for local dominance queries 2020-02-18 14:44:24 -08:00
CMakeLists.txt [Remarks] Extend the RemarkStreamer to support other emitters 2020-02-04 17:16:02 -08:00
Comdat.cpp
ConstantFold.cpp [ConstantFold][SVE] Fix constant folding for bitcast. 2020-02-05 15:39:57 -08:00
ConstantFold.h
ConstantRange.cpp [ConstantRange] Respect destination bitwidth for cast results. 2019-12-27 17:38:34 +00:00
Constants.cpp [NFC] Remove trailing space 2020-02-18 10:49:13 +08:00
ConstantsContext.h Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Core.cpp [NFC] Remove trailing space 2020-02-18 10:49:13 +08:00
DataLayout.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
DebugInfo.cpp [DebugInfo] Merge DebugInfoFinder::{processDeclare,processValue} into processVariable 2020-02-01 23:00:21 -08:00
DebugInfoMetadata.cpp Move the sysroot attribute from DIModule to DICompileUnit 2020-01-17 12:55:40 -08:00
DebugLoc.cpp
DiagnosticHandler.cpp
DiagnosticInfo.cpp [NFC] Remove trailing space 2020-02-18 10:49:13 +08:00
DiagnosticPrinter.cpp
DIBuilder.cpp [IRBuilder] Delete copy constructor 2020-02-17 18:14:48 +01:00
Dominators.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
FPEnv.cpp Add missing newlines at EOF; NFC 2020-02-12 15:57:25 +00:00
Function.cpp Resubmit "[Alignment][NFC] Deprecate CreateMemCpy/CreateMemMove" 2019-12-17 10:07:46 +01:00
Globals.cpp Implement -fsemantic-interposition 2020-01-31 14:02:33 +01:00
GVMaterializer.cpp
InlineAsm.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Instruction.cpp [IR] Lazily number instructions for local dominance queries 2020-02-18 14:44:24 -08:00
Instructions.cpp Reapply: [SVE] Fix bug in simplification of scalable vector instructions 2020-02-05 10:00:09 -08:00
IntrinsicInst.cpp [FPEnv] Divide macro INSTRUCTION into INSTRUCTION and DAG_INSTRUCTION, 2020-01-27 10:38:05 +08:00
IRBuilder.cpp Reapply "[IRBuilder] Virtualize IRBuilder" 2020-02-17 19:04:11 +01:00
IRPrintingPasses.cpp [PassInstrumentation] Remove excess newline for the new pass manager 2019-11-28 17:20:17 -08:00
LegacyPassManager.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
LLVMBuild.txt
LLVMContext.cpp [Remarks] Fix gcc build 2020-02-04 17:43:59 -08:00
LLVMContextImpl.cpp Make dropTriviallyDeadConstantArrays not quadratic 2020-01-21 16:06:46 +01:00
LLVMContextImpl.h [Remarks] Fix gcc build 2020-02-04 17:43:59 -08:00
LLVMRemarkStreamer.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
Mangler.cpp
MDBuilder.cpp Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
Metadata.cpp [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables 2020-01-23 11:36:01 -08:00
MetadataImpl.h
Module.cpp RNG: Take pass name as argument instead of pass pointer. 2020-01-31 14:21:40 -05:00
ModuleSummaryIndex.cpp [Assembler] Emit summary index flags 2020-02-18 17:49:54 +03:00
Operator.cpp
OptBisect.cpp
Pass.cpp [LegacyPassManager] Delete BasicBlockPass/Manager. 2019-10-30 11:40:16 -07:00
PassInstrumentation.cpp
PassManager.cpp Add PassManagerImpl.h to hide implementation details 2020-02-03 11:15:55 -08:00
PassRegistry.cpp
PassTimingInfo.cpp
ProfileSummary.cpp
SafepointIRVerifier.cpp [Support] Split MallocAllocator out of Allocator.h 2020-01-24 17:29:32 -08:00
Statepoint.cpp
SymbolTableListTraitsImpl.h [IR] Lazily number instructions for local dominance queries 2020-02-18 14:44:24 -08:00
Type.cpp [SVE][IR] Scalable Vector size queries and IR instruction support 2019-10-08 12:53:54 +00:00
TypeFinder.cpp [NFC] Fixes -Wrange-loop-analysis warnings 2020-01-01 20:01:37 +01:00
Use.cpp
User.cpp Reinstate MSan suppression of PR24578. 2019-11-22 11:25:24 -08:00
Value.cpp Fix MSAN failure on Function destruction 2020-02-06 15:09:58 -08:00
ValueSymbolTable.cpp
Verifier.cpp [NFC] Remove trailing space 2020-02-18 10:49:13 +08:00