llvm/lib/IR
Chandler Carruth 4d32e85359 [PM] Switch the downward invalidation to be incremental where only the
one function's analyses are invalidated at a time. Also switch the
preservation of the proxy to *fully* preserve the lower (function)
analyses.

Combined, this gets both upward and downward analysis invalidation to
a point I'm happy with:

- A function pass invalidates its function analyses, and its parent's
  module analyses.
- A module pass invalidates all of its functions' analyses including the
  set of which functions are in the module.
- A function pass can preserve a module analysis pass.
- If all function passes preserve a module analysis pass, that
  preservation persists. If any doesn't the module analysis is
  invalidated.
- A module pass can opt into managing *all* function analysis
  invalidation itself or *none*.
- The conservative default is none, and the proxy takes the maximally
  conservative approach that works even if the set of functions has
  changed.
- If a module pass opts into managing function analysis invalidation it
  has to propagate the invalidation itself, the proxy just does nothing.

The only thing really missing is a way to query for a cached analysis or
nothing at all. With this, function passes can more safely request
a cached module analysis pass without fear of it accidentally running
part way through.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195519 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-22 23:38:07 +00:00
..
AsmWriter.cpp Print new JavaScript calling conventions symbolically. 2013-11-11 22:40:22 +00:00
AsmWriter.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
AttributeImpl.h [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
Attributes.cpp [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
AutoUpgrade.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
BasicBlock.cpp
CMakeLists.txt Introduce an AnalysisManager which is like a pass manager but with a lot 2013-11-13 01:12:08 +00:00
ConstantFold.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
ConstantFold.h
Constants.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
ConstantsContext.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
Core.cpp Expose the fence instruction via the C API. 2013-11-20 00:07:49 +00:00
DataLayout.cpp DataLayout: value initialize globals to avoid static construction. 2013-11-19 20:28:04 +00:00
DebugInfo.cpp Debug Info: move StripDebugInfo from StripSymbols.cpp to DebugInfo.cpp. 2013-11-22 22:06:31 +00:00
DebugLoc.cpp
DIBuilder.cpp DebugInfo: Simplify a few more explicit constructions, underconstrained types, and make DIType(MDNode*) explicit like all the other DI* node ctors. 2013-11-18 23:33:32 +00:00
Dominators.cpp
Function.cpp Enable variable arguments support for intrinsics. 2013-10-31 17:18:11 +00:00
GCOV.cpp llvm-cov: Formatting change. 2013-11-21 04:12:10 +00:00
Globals.cpp Revert r193251 : Use address-taken to disambiguate global variable and indirect memops. 2013-10-27 03:08:44 +00:00
GVMaterializer.cpp
InlineAsm.cpp Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. 2013-02-12 21:21:59 +00:00
Instruction.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
Instructions.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
LeakDetector.cpp
LeaksContext.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
LegacyPassManager.cpp Move the old pass manager infrastructure into a legacy namespace and 2013-11-09 12:26:54 +00:00
LLVMBuild.txt
LLVMContext.cpp Memory Dependence Analysis (not mem-dep test) take advantage of "invariant.load" metadata. 2013-03-06 17:48:48 +00:00
LLVMContextImpl.cpp Revert "Rename LLVMContext diagnostic handler types and functions." 2013-02-11 05:37:07 +00:00
LLVMContextImpl.h Implement function prefix data as an IR feature. 2013-09-16 01:08:15 +00:00
Makefile
Metadata.cpp [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
Module.cpp Use error_code in GVMaterializer. 2013-11-05 19:36:34 +00:00
Pass.cpp Enable *BasicBlockPass::createPrinterPass() 2013-02-08 23:37:41 +00:00
PassManager.cpp [PM] Switch the downward invalidation to be incremental where only the 2013-11-22 23:38:07 +00:00
PassRegistry.cpp Use an RWMutex instead of a Mutex in PassRegistry. 2013-07-03 18:38:08 +00:00
PrintModulePass.cpp Enable *BasicBlockPass::createPrinterPass() 2013-02-08 23:37:41 +00:00
SymbolTableListTraitsImpl.h
Type.cpp Simplify code. No functionality change. 2013-11-11 14:54:34 +00:00
TypeFinder.cpp TypeFinder: prefer iterative algorithm to keep stack usage low. 2013-10-16 04:10:06 +00:00
Use.cpp
User.cpp
Value.cpp Make it explicit that nulls are not allowed in names. 2013-11-19 21:12:39 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp Add v4f16 to supported value types. 2013-10-03 03:29:21 +00:00
Verifier.cpp The 'optnone' attribute means don't inline anything into this function 2013-11-18 21:44:03 +00:00