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 8724378ec0 [PM] Teach the AAManager and AAResults layer (the worst offender for
inter-analysis dependencies) to use the new invalidation infrastructure.

This teaches it to invalidate itself when any of the peer function
AA results that it uses become invalid. We do this by just tracking the
originating IDs. I've kept it in a somewhat clunky API since some users
of AAResults are outside the new PM right now. We can clean this API up
if/when those users go away.

Secondly, it uses the registration on the outer analysis manager proxy
to trigger deferred invalidation when a module analysis result becomes
invalid.

I've included test cases that specifically try to trigger use-after-free
in both of these cases and they would crash or hang pretty horribly for
me even without ASan. Now they work nicely.

The `InvalidateAnalysis` utility pass required some tweaking to be
useful in this context and it still is pretty garbage. I'd like to
switch it back to the previous implementation and teach the explicit
invalidate method on the AnalysisManager to take care of correctly
triggering indirect invalidation, but I wanted to go ahead and send this
out so folks could see how all of this stuff works together in practice.
And, you know, that it does actually work. =]

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

llvm-svn: 290595
2016-12-27 08:44: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 [bpf] add support for bpf pseudo instruction 2015-03-27 18:51:42 +00:00
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] Teach the AAManager and AAResults layer (the worst offender for 2016-12-27 08:44: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 Revamp PredIteratorCache interface to be cleaner. 2015-04-21 21:11:50 +00:00
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 Update comment. NFC. 2015-04-21 21:15:35 +00:00
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