1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/include/llvm
Roman Lebedev f45051c79a [NFCI][SimplifyCFG] Add basic scaffolding for gradually making the pass DomTree-aware
Two observations:
1. Unavailability of DomTree makes it impossible to make
  `FoldBranchToCommonDest()` transform in certain cases,
   where the successor is dominated by predecessor,
   because we then don't have PHI's, and can't recreate them,
   well, without handrolling 'is dominated by' check,
   which doesn't really look like a great solution to me.
2. Avoiding invalidating DomTree in SimplifyCFG will
   decrease the number of `Dominator Tree Construction` by 5
   (from 28 now, i.e. -18%) in `-O3` old-pm pipeline
   (as per `llvm/test/Other/opt-O3-pipeline.ll`)
   This might or might not be beneficial for compile time.

So the plan is to make SimplifyCFG preserve DomTree, and then
eventually make DomTree fully required and preserved by the pass.

Now, SimplifyCFG is ~7KLOC. I don't think it will be nice
to do all this uplifting in a single mega-commit,
nor would it be possible to review it in any meaningful way.

But, i believe, it should be possible to do this in smaller steps,
introducing the new behavior, in an optional way, off-by-default,
opt-in option, and gradually fixing transforms one-by-one
and adding the flag to appropriate test coverage.

Then, eventually, the default should be flipped,
and eventually^2 the flag removed.

And that is what is happening here - when the new off-by-default option
is specified, DomTree is required and is claimed to be preserved,
and SimplifyCFG-internal assertions verify that the DomTree is still OK.
2020-12-16 00:38:00 +03:00
..
ADT [mlir][Inliner] Refactor the inliner to use nested pass pipelines instead of just canonicalization 2020-12-14 18:09:47 -08:00
Analysis [Analysis] Use llvm::erase_value (NFC) 2020-12-14 22:40:13 -08:00
AsmParser
BinaryFormat [llvm-readelf] - Improve ELF type field dumping. 2020-12-14 11:24:08 +03:00
Bitcode [clang][IR] Add support for leaf attribute 2020-12-14 14:48:17 -08:00
Bitstream
CodeGen [GlobalISel][IRTranslator] Ensure branch probabilities are added when translating invoke edges. 2020-12-14 23:36:54 -08:00
Config Revert "Use std::is_trivially_copyable", breaks MSVC build 2020-12-02 14:30:46 -08:00
DebugInfo Switch from llvm::is_trivially_copyable to std::is_trivially_copyable 2020-12-02 22:02:48 -08:00
Demangle
DWARFLinker [dsymutil][DWARFLinker][NFC] Make interface of AddressMap more general. 2020-12-10 14:57:08 +03:00
ExecutionEngine Re-apply 8904ee8ac7e with missing header included this time. 2020-12-14 13:39:33 +11:00
FileCheck
Frontend [Flang][OpenMP-5.0] Semantic checks for flush construct. 2020-12-14 13:30:48 +05:30
FuzzMutate
InterfaceStub
IR Revert "[FPEnv] Teach the IRBuilder about invoke's correct use of the strictfp attribute." 2020-12-15 12:58:47 -05:00
IRReader
LineEditor
Linker
LTO [LTO][NPM] Default to using NPM under ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER 2020-12-09 17:48:47 -08:00
MC [MCAsmInfo] Delete unused doesSupportExceptionHandling 2020-12-11 11:08:16 -08:00
MCA
Object [WebAssembly] Add Object and ObjectWriter support for wasm COMDAT sections 2020-12-07 12:12:44 -08:00
ObjectYAML [WebAssembly] Add support for named data sections in wasm binaries 2020-12-09 12:57:07 -08:00
Option [clang][cli] Better defaults for MarshallingInfoString 2020-12-14 09:59:56 +01:00
Passes [CSSPGO] Pseudo probe encoding and emission. 2020-12-10 17:29:28 -08:00
ProfileData [llvm-cov gcov] Replace Donald B. Johnson's cycle enumeration with iterative cycle finding 2020-12-11 18:28:16 -08:00
Remarks
Support [AMDGPU] Clarify scratch initialization 2020-12-15 20:14:20 +00:00
TableGen Revert "[openmp] Remove clause from OMPKinds.def and use OMP.td info" 2020-12-10 10:34:59 -05:00
Target [NFC] cleanup cg-profile emission on TargetLowerinng 2020-12-14 13:07:44 -08:00
Testing/Support
TextAPI/MachO
ToolDrivers
Transforms [NFCI][SimplifyCFG] Add basic scaffolding for gradually making the pass DomTree-aware 2020-12-16 00:38:00 +03:00
WindowsManifest
WindowsResource
XRay
CMakeLists.txt
InitializePasses.h Revert "[Debugify] Support checking Machine IR debug info" 2020-12-14 22:14:48 -05:00
LinkAllIR.h
LinkAllPasses.h [ScalarizeMaskedMemIntrin] Add new PM support 2020-12-08 17:15:22 -05:00
module.extern.modulemap
module.install.modulemap
module.modulemap
module.modulemap.build
Pass.h [Time-report] Add a flag -ftime-report={per-pass,per-pass-run} to control the pass timing aggregation 2020-12-08 10:13:19 -08:00
PassAnalysisSupport.h
PassInfo.h
PassRegistry.h
PassSupport.h