1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/include/llvm/IR
Chandler Carruth 99ebb6e7dc [PM] Introduce the facilities for registering cross-IR-unit dependencies
that require deferred invalidation.

This handles the other real-world invalidation scenario that we have
cases of: a function analysis which caches references to a module
analysis. We currently do this in the AA aggregation layer and might
well do this in other places as well.

Since this is relative rare, the technique is somewhat more cumbersome.
Analyses need to register themselves when accessing the outer analysis
manager's proxy. This proxy is already necessarily present to allow
access to the outer IR unit's analyses. By registering here we can track
and trigger invalidation when that outer analysis goes away.

To make this work we need to enhance the PreservedAnalyses
infrastructure to support a (slightly) more explicit model for "sets" of
analyses, and allow abandoning a single specific analyses even when
a set covering that analysis is preserved. That allows us to describe
the scenario of preserving all Function analyses *except* for the one
where deferred invalidation has triggered.

We also need to teach the invalidator API to support direct ID calls
instead of always going through a template to dispatch so that we can
just record the ID mapping.

I've introduced testing of all of this both for simple module<->function
cases as well as for more complex cases involving a CGSCC layer.

Much like the previous patch I've not tried to fully update the loop
pass management layer because that layer is due to be heavily reworked
to use similar techniques to the CGSCC to handle updates. As that
happens, we'll have a better testing basis for adding support like this.

Many thanks to both Justin and Sean for the extensive reviews on this to
help bring the API design and documentation into a better state.

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

llvm-svn: 290594
2016-12-27 08:40:39 +00:00
..
Argument.h Swift Calling Convention: add swifterror attribute. 2016-04-01 21:41:15 +00:00
AssemblyAnnotationWriter.h Prune trailing whitespaces. 2015-09-22 11:19:03 +00:00
Attributes.h Kill deprecated attribute API 2016-11-06 07:48:46 +00:00
Attributes.td Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
AutoUpgrade.h Fix auto-upgrade of TBAA tags in Bitcode Reader 2016-09-14 22:29:59 +00:00
BasicBlock.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
CallingConv.h [X86] Basic additions to support RegCall Calling Convention. 2016-10-13 07:53:43 +00:00
CallSite.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
CFG.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
CMakeLists.txt IR: Rename the tablegen'd Attributes file to .gen 2016-09-29 03:35:19 +00:00
Comdat.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
Constant.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-02 22:00:59 +00:00
ConstantFolder.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
ConstantRange.h Factor out common parts of LVI and Float2Int into ConstantRange [NFCI] 2016-12-01 20:08:47 +00:00
Constants.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-02 22:00:59 +00:00
DataLayout.h Correct PrivateLinkage for COFF 2016-10-13 00:55:24 +00:00
DebugInfo.h [IR] Remove the DIExpression field from DIGlobalVariable. 2016-12-20 02:09:43 +00:00
DebugInfoFlags.def [DebugInfo] Add support for DW_AT_main_subprogram on subprograms 2016-11-28 21:32:19 +00:00
DebugInfoMetadata.h [DebugInfo] Added support for Checksum debug info feature. 2016-12-25 10:12:09 +00:00
DebugLoc.h Do a sweep over move ctors and remove those that are identical to the default. 2016-10-20 12:20:28 +00:00
DerivedTypes.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-05 21:55:02 +00:00
DiagnosticInfo.h [GVN, OptDiag] Include the value that is forwarded in load elimination 2016-12-01 17:34:44 +00:00
DiagnosticPrinter.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
DIBuilder.h Wdocumentation fix 2016-12-26 17:48:19 +00:00
Dominators.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
Function.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-02 22:00:59 +00:00
GetElementPtrTypeIterator.h Fix MSVC -Wmicrosoft-enum-value 'enumerator value is not representable' warning 2016-12-06 11:27:19 +00:00
GlobalAlias.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-05 21:55:02 +00:00
GlobalIFunc.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-05 21:55:02 +00:00
GlobalIndirectSymbol.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-05 21:55:02 +00:00
GlobalObject.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-05 21:55:02 +00:00
GlobalValue.h IR, X86: Understand !absolute_symbol metadata on global variables. 2016-12-08 19:01:00 +00:00
GlobalVariable.h [IR] Remove the DIExpression field from DIGlobalVariable. 2016-12-20 02:09:43 +00:00
GVMaterializer.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
InlineAsm.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
InstIterator.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
InstrTypes.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
Instruction.def [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
Instruction.h Stop lying about pointers' required alignments. 2016-12-12 23:29:07 +00:00
Instructions.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-05 21:55:02 +00:00
InstVisitor.h [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
IntrinsicInst.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
Intrinsics.h Expandload and Compressstore intrinsics 2016-11-03 03:23:55 +00:00
Intrinsics.td Add IntrInaccessibleMemOnly property for intrinsics 2016-11-22 19:16:04 +00:00
IntrinsicsAArch64.td IR: Set TargetPrefix for some X86 and AArch64 intrinsics where it was missing 2016-07-01 22:07:11 +00:00
IntrinsicsAMDGPU.td AMDGPU: Add llvm.amdgcn.interp.mov intrinsic 2016-12-06 23:52:13 +00:00
IntrinsicsARM.td [ARM] Add support for mrrc/mrrc2 intrinsics. 2016-06-17 00:52:41 +00:00
IntrinsicsBPF.td
IntrinsicsHexagon.td [Hexagon] Handle operand type differences for A2_tfrpi 2016-05-05 15:29:47 +00:00
IntrinsicsMips.td Split IntrReadArgMem into IntrReadMem and IntrArgMemOnly 2016-04-21 17:48:02 +00:00
IntrinsicsNVVM.td [NVPTX] Added intrinsics for atom.gen.{sys|cta}.* instructions. 2016-09-28 17:25:38 +00:00
IntrinsicsPowerPC.td [PPC] Add intrinsics for vector extract word and vector insert word. 2016-12-09 17:21:42 +00:00
IntrinsicsSystemZ.td [SystemZ] Support floating-point control register instructions 2016-12-02 18:21:53 +00:00
IntrinsicsWebAssembly.td [WebAssembly] Rename memory_size intrinsic to current_memory 2016-05-02 17:25:22 +00:00
IntrinsicsX86.td [AVX-512] Remove masked pmuldq and pmuludq intrinsics and autoupgrade them to unmasked intrinsics plus a select. 2016-12-27 05:30:14 +00:00
IntrinsicsXCore.td
IRBuilder.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
IRPrintingPasses.h [PM] Re-instate r279227 and r279228 with a fix to the way the templating 2016-08-19 18:36:06 +00:00
LegacyPassManager.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LegacyPassManagers.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
LegacyPassNameParser.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
LLVMContext.h IR, X86: Understand !absolute_symbol metadata on global variables. 2016-12-08 19:01:00 +00:00
Mangler.h Remove the default constructor and count variable from the Mangler since 2016-09-29 02:03:50 +00:00
MDBuilder.h Use profile info to set function section prefix to group hot/cold functions. 2016-10-18 20:42:47 +00:00
Metadata.def [IR] Remove the DIExpression field from DIGlobalVariable. 2016-12-20 02:09:43 +00:00
Metadata.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-02 22:00:59 +00:00
Module.h Fix some bad indentation that I or another introduced somehow. 2016-12-26 01:20:59 +00:00
ModuleSlotTracker.h IR: Avoid mallocs in constructor of ModuleSlotTracker 2016-04-20 19:05:59 +00:00
ModuleSummaryIndex.h [ThinLTO] Save 8B per summary entry by rearranging the fields (NFC) 2016-12-22 04:09:29 +00:00
NoFolder.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
OperandTraits.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Operator.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
OptBisect.h Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
PassManager.h [PM] Introduce the facilities for registering cross-IR-unit dependencies 2016-12-27 08:40:39 +00:00
PassManagerInternal.h [PM] Introduce the facilities for registering cross-IR-unit dependencies 2016-12-27 08:40:39 +00:00
PatternMatch.h [InstCombine] add folds for icmp (umin|umax X, Y), X 2016-12-19 17:32:37 +00:00
PredIteratorCache.h
ProfileSummary.h Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
Statepoint.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
SymbolTableListTraits.h ADT: Split out iplist_impl from iplist, NFC 2016-09-03 02:07:45 +00:00
TrackingMDRef.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Type.h Replace APFloatBase static fltSemantics data members with getter functions 2016-12-14 11:57:17 +00:00
TypeBuilder.h
TypeFinder.h Fix ThinLTO crash with debug info 2016-09-03 21:12:33 +00:00
Use.h Stop lying about pointers' required alignments. 2016-12-12 23:29:07 +00:00
UseListOrder.h Do a sweep over move ctors and remove those that are identical to the default. 2016-10-20 12:20:28 +00:00
User.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-02 22:00:59 +00:00
Value.def [GCC] Attribute ifunc support in llvm 2016-04-07 12:32:19 +00:00
Value.h Stop lying about pointers' required alignments. 2016-12-12 23:29:07 +00:00
ValueHandle.h Stop lying about pointers' required alignments. 2016-12-12 23:29:07 +00:00
ValueMap.h [IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-06 22:00:57 +00:00
ValueSymbolTable.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Verifier.h Fix comment on the verifier (typo + doxygen) (NFC) 2016-12-16 19:24:13 +00:00