hanchenye-llvm-project/llvm/lib/IR
Chandler Carruth 44a1385c45 [LPM] Teach the legacy pass manager to support *using* an analysis
without *requiring* it.

This allows a pass indicate that it will use an analysis if available
(through getAnalysisIfAvailable). When the pass manager knows this, it
will refrain from deleting that analysis if it can. Naturally, it will
still get invalidated at the correct time. These passes are not
considered when scheduling the pass pipeline, so typically they will
require manual scheduling, but this may also allow passes with
getAnalysisIfAvailable to find the analysis more often if nothing after
them requires that analysis and it wasn't invalidated.

I don't have a particular use case with the current passes, but with my
new structure for alias analyses, this will be very useful. We want to
allow people to customize the set of AAs available by scheduling
additional passes. These's aren't ever *required* for obvious reasons.
So we need some way to mark in the legacy pass manager that they will
still be used if available.

This is essentially how analysis groups already work. But this makes the
feature generally available and more explicit. It should allow the AA
change to not impact how people trigger a custom alias analysis being
available at a certain point in compilation.

Differential Revision: http://reviews.llvm.org/D12114

llvm-svn: 245409
2015-08-19 03:02:12 +00:00
..
AsmWriter.cpp [IR] Give catchret an optional 'return value' operand 2015-08-15 02:46:08 +00:00
AttributeImpl.h llvm/lib/IR/AttributeImpl.h: Move comment block not to cover typedef, introduced in r244164. [-Wdocumentation] 2015-08-06 09:49:17 +00:00
Attributes.cpp Add a TrailingObjects template class. 2015-08-05 22:57:34 +00:00
AutoUpgrade.cpp Remove always-true comparison, NFC. 2015-07-03 20:12:01 +00:00
BasicBlock.cpp Convert a bunch of loops to foreach. NFC. 2015-08-06 20:22:46 +00:00
CMakeLists.txt [opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr. 2015-05-08 00:42:26 +00:00
Comdat.cpp
ConstantFold.cpp De-constify pointers to Type since they can't be modified. NFC 2015-08-01 22:20:21 +00:00
ConstantFold.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ConstantRange.cpp [ConstantRange] Split makeICmpRegion in two. 2015-03-18 00:41:24 +00:00
Constants.cpp De-constify pointers to Type since they can't be modified. NFC 2015-08-01 22:20:21 +00:00
ConstantsContext.h [opaque pointer type] Avoid using pointee types to retrieve InlineAsm's function type 2015-07-28 00:06:38 +00:00
Core.cpp [IR] Add token types 2015-08-14 05:09:07 +00:00
DIBuilder.cpp DI: Remove DW_TAG_arg_variable and DW_TAG_auto_variable 2015-07-31 18:58:39 +00:00
DataLayout.cpp Revert "Add const to a bunch of Type* in DataLayout. NFC." 2015-07-27 17:15:28 +00:00
DebugInfo.cpp DI: Simplify DebugInfoFinder::processType(), NFC 2015-07-24 20:56:10 +00:00
DebugInfoMetadata.cpp DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
DebugLoc.cpp IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
DiagnosticInfo.cpp Print vectorization analysis when loop hint is specified. 2015-08-11 01:09:15 +00:00
DiagnosticPrinter.cpp MIR Serialization: Connect the machine function analysis pass to the MIR parser. 2015-06-15 20:30:22 +00:00
Dominators.cpp [IR] Give catchret an optional 'return value' operand 2015-08-15 02:46:08 +00:00
Function.cpp [CallGraph] Teach the CallGraph about non-leaf intrinsics. 2015-06-18 19:28:26 +00:00
GCOV.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GVMaterializer.cpp
Globals.cpp Devirtualize Constant::replaceUsesOfWithOnConstant. 2015-06-24 18:55:24 +00:00
IRBuilder.cpp IRBuilder: Allow globals to be constructed in a specific address space 2015-06-19 02:12:07 +00:00
IRPrintingPasses.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
InlineAsm.cpp [opaque pointer type] Avoid using pointee types to retrieve InlineAsm's function type 2015-07-28 00:06:38 +00:00
Instruction.cpp New EH representation for MSVC compatibility 2015-07-31 17:58:14 +00:00
Instructions.cpp [IR] Give catchret an optional 'return value' operand 2015-08-15 02:46:08 +00:00
IntrinsicInst.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
LLVMBuild.txt
LLVMContext.cpp Late evaluation of the fast-math vectorization requirement. 2015-08-10 19:51:46 +00:00
LLVMContextImpl.cpp [IR] Add token types 2015-08-14 05:09:07 +00:00
LLVMContextImpl.h [IR] Add token types 2015-08-14 05:09:07 +00:00
LegacyPassManager.cpp [LPM] Teach the legacy pass manager to support *using* an analysis 2015-08-19 03:02:12 +00:00
MDBuilder.cpp Add isConstant argument to MDBuilder::createTBAAStructTagNode 2015-06-01 14:53:55 +00:00
Makefile
Mangler.cpp Remove unused arguments and move ManglerPrefixTy to the implementation. 2015-06-23 14:11:09 +00:00
Metadata.cpp DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
MetadataImpl.h DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
MetadataTracking.cpp IR: Store RAUW support and Context in the same pointer, NFC 2015-01-19 19:02:06 +00:00
Module.cpp If the "CodeView" module flag is set, emit codeview instead of DWARF 2015-08-05 22:26:20 +00:00
Operator.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Pass.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PassManager.cpp [PM] Push the debug option for the new pass manager into the opt tool 2015-01-13 22:42:38 +00:00
PassRegistry.cpp Revert r231276 (including r231277): Add a lock() function in PassRegistry to speed up multi-thread synchronization. 2015-03-05 17:53:00 +00:00
Statepoint.cpp Add invoke related functionality into StatepointSite classes. 2015-02-19 11:02:11 +00:00
SymbolTableListTraitsImpl.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Type.cpp [IR] Simplify code. No functionality change. 2015-08-16 21:16:26 +00:00
TypeFinder.cpp Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
Use.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
User.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Value.cpp [IR] Switch static const to an enum to silence MSVC linker warnings 2015-07-10 22:46:02 +00:00
ValueSymbolTable.cpp Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
ValueTypes.cpp Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
Verifier.cpp [IR] Add token types 2015-08-14 05:09:07 +00:00
module.modulemap