llvm-6502/include/llvm
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
..
ADT Make the moved-from SmallPtrSet be a valid, empty, small-state object. 2013-11-20 18:29:56 +00:00
Analysis [block-freq] Add a method to loop info for returning all loop latches for a specific loop. 2013-11-22 05:00:48 +00:00
Assembly Enable *BasicBlockPass::createPrinterPass() 2013-02-08 23:37:41 +00:00
Bitcode Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
CodeGen Fix a typo where we were creating <def,kill> operands instead of 2013-11-22 00:46:32 +00:00
Config Update to reflect the next release. 2013-11-20 10:10:50 +00:00
DebugInfo DWARF parser: Use ArrayRef to represent form sizes and simplify DWARFDIE::extractFast() interface. No functionality change. 2013-10-28 23:41:49 +00:00
ExecutionEngine [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
IR [PM] Switch the downward invalidation to be incremental where only the 2013-11-22 23:38:07 +00:00
IRReader Split out the IRReader header and the utility functions it provides into 2013-03-26 02:25:37 +00:00
LTO Protect user-supplied runtime library functions in LTO 2013-11-12 21:44:01 +00:00
MC Teach ISel not to optimize 'optnone' functions (revised). 2013-11-22 19:11:24 +00:00
Object Readobj: If NumbersOfSections is 0xffff, it's an COFF import library. 2013-11-15 20:23:25 +00:00
Option Option parsing: support case-insensitive option matching. 2013-08-28 20:04:31 +00:00
Support Debug Info: add a constant for debug info version number. 2013-11-22 19:41:59 +00:00
TableGen Speling fixes. 2013-10-22 15:18:03 +00:00
Target Teach ISel not to optimize 'optnone' functions (revised). 2013-11-22 19:11:24 +00:00
Transforms Add a Scalarizer pass. 2013-11-22 16:58:05 +00:00
AutoUpgrade.h Fix spacing, forward declare order. 2013-11-18 02:51:33 +00:00
CMakeLists.txt Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
DebugInfo.h Debug Info: move StripDebugInfo from StripSymbols.cpp to DebugInfo.cpp. 2013-11-22 22:06:31 +00:00
DIBuilder.h 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
GVMaterializer.h Use error_code in GVMaterializer. 2013-11-05 19:36:34 +00:00
InitializePasses.h Add a Scalarizer pass. 2013-11-22 16:58:05 +00:00
InstVisitor.h Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
LinkAllIR.h Rename LinkAllVMCore.h to LinkAllIR.h since VMCore directory was renamed to IR. 2013-01-10 21:55:02 +00:00
LinkAllPasses.h Add a Scalarizer pass. 2013-11-22 16:58:05 +00:00
Linker.h Add a 'deleteModule' method to the Linker class. 2013-10-16 08:59:57 +00:00
Pass.h moves doInitialization and doFinalization to the Pass class and removes some unreachable code in MachineModuleInfo 2012-12-03 21:56:57 +00:00
PassAnalysisSupport.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
PassManager.h Move the old pass manager infrastructure into a legacy namespace and 2013-11-09 12:26:54 +00:00
PassRegistry.h This patch breaks up Wrap.h so that it does not have to include all of 2013-05-01 20:59:00 +00:00
PassSupport.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00