llvm-6502/include/llvm
Chandler Carruth c49e7e6aee [PM] Add the preservation system to the new pass manager.
This adds a new set-like type which represents a set of preserved
analysis passes. The set is managed via the opaque PassT::ID() void*s.
The expected convenience templates for interacting with specific passes
are provided. It also supports a symbolic "all" state which is
represented by an invalid pointer in the set. This state is nicely
saturating as it comes up often. Finally, it supports intersection which
is used when finding the set of preserved passes after N different
transforms.

The pass API is then changed to return the preserved set rather than
a bool. This is much more self-documenting than the previous system.
Returning "none" is a conservatively correct solution just like
returning "true" from todays passes and not marking any passes as
preserved. Passes can also be dynamically preserved or not throughout
the run of the pass, and whatever gets returned is the binding state.
Finally, preserving "all" the passes is allowed for no-op transforms
that simply can't harm such things.

Finally, the analysis managers are changed to instead of blindly
invalidating all of the analyses, invalidate those which were not
preserved. This should rig up all of the basic preservation
functionality. This also correctly combines the preservation moving up
from one IR-layer to the another and the preservation aggregation across
N pass runs. Still to go is incrementally correct invalidation and
preservation across IR layers incrementally during N pass runs. That
will wait until we have a device for even exposing analyses across IR
layers.

While the core of this change is obvious, I'm not happy with the current
testing, so will improve it to cover at least some of the invalidation
that I can test easily in a subsequent commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195241 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-20 11:31:50 +00:00
..
ADT Give SmallPtrSet move semantics when we have R-value references. 2013-11-20 11:14:33 +00:00
Analysis ScalarEvolution: Warn if the result of setFlags/clearFlags is unused. 2013-11-16 16:25:47 +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 Remove capability for polymorphic destruction from LexicalScope 2013-11-20 00:54:28 +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] Add the preservation system to the new pass manager. 2013-11-20 11:31:50 +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 Support multiple COFF sections with the same name but different COMDAT. 2013-11-19 19:52:52 +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 llvm-cov: Added file checksum to gcno and gcda files. 2013-11-20 04:15:05 +00:00
TableGen Speling fixes. 2013-10-22 15:18:03 +00:00
Target Added a size field to the stack map record to handle subregister spills. 2013-11-17 01:36:23 +00:00
Transforms Add support for software expansion of 64-bit integer division instructions. 2013-11-19 06:54:19 +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 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
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 loop rerolling pass 2013-11-16 23:59: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 loop rerolling pass 2013-11-16 23:59:05 +00:00
Linker.h Add a 'deleteModule' method to the Linker class. 2013-10-16 08:59:57 +00:00
Pass.h
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