1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/include/llvm
Chandler Carruth 72105b1195 [LCG] Add the first round of mutation support to the lazy call graph.
This implements the core functionality necessary to remove an edge from
the call graph and correctly update both the basic graph and the SCC
structure. As part of that it has to run a tiny (in number of nodes)
Tarjan-style DFS walk of an SCC being mutated to compute newly formed
SCCs, etc.

This is *very rough* and a WIP. I have a bunch of FIXMEs for code
cleanup that will reduce the boilerplate in this change substantially.
I also have a bunch of simplifications to various parts of both
algorithms that I want to make, but first I'd like to have a more
holistic picture. Ideally, I'd also like more testing. I'll probably add
quite a few more unit tests as I go here to cover the various different
aspects and corner cases of removing edges from the graph.

Still, this is, so far, successfully updating the SCC graph in-place
without disrupting the identity established for the existing SCCs even
when we do challenging things like delete the critical edge that made an
SCC cycle at all and have to reform things as a tree of smaller SCCs.
Getting this to work is really critical for the new pass manager as it
is going to associate significant state with the SCC instance and needs
it to be stable. That is also the motivation behind the return of the
newly formed SCCs. Eventually, I'll wire this all the way up to the
public API so that the pass manager can use it to correctly re-enqueue
newly formed SCCs into a fresh postorder traversal.

llvm-svn: 206968
2014-04-23 11:03:03 +00:00
..
ADT Whitespace 2014-04-22 19:52:05 +00:00
Analysis [LCG] Add the first round of mutation support to the lazy call graph. 2014-04-23 11:03:03 +00:00
AsmParser Move the LLVM IR asm writer header files into the IR directory, as they 2014-01-07 12:34:26 +00:00
Bitcode Update comment in LLVMBitCodes.h to reflect the actual bitcode record 2014-04-18 18:19:18 +00:00
CodeGen Use unique_ptr to manage objects owned by the ScheduleDAGMI. 2014-04-21 20:32:32 +00:00
Config static link polly into tools 2014-03-14 04:04:14 +00:00
DebugInfo [DWARF parser] Turn DILineInfo into a struct. 2014-04-18 21:36:39 +00:00
ExecutionEngine Object: iterator_range accessors for ObjectImage symbols and sections. 2014-04-21 18:10:26 +00:00
IR AArch64/ARM64: mark fmul intrinsic as commutative. 2014-04-22 10:10:14 +00:00
IRReader
LineEditor [C++11] Replace OwningPtr with std::unique_ptr in places where it doesn't break the API. 2014-04-21 09:34:48 +00:00
Linker [Layering] Sink Linker.h into a Linker subdirectory to make it 2014-03-06 03:42:23 +00:00
LTO [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 06:32:26 +00:00
MC Change the prototype for MCContext::FatalError() so it can be called 2014-04-22 21:42:18 +00:00
Object Fix wrong iterator type 2014-04-21 23:00:42 +00:00
Option Protect the ArgList dtor 2014-04-20 23:59:00 +00:00
ProfileData OnDiskHashTable: Audit types and use offset_type consistently 2014-04-19 00:33:15 +00:00
Support [Modules] Make Support/Debug.h modular. This requires it to not change 2014-04-21 22:55:11 +00:00
TableGen [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 07:20:03 +00:00
Target ARM64: Combine shifts and uses from different basic block to bit-extract instruction 2014-04-21 19:34:27 +00:00
Transforms [Modules] Make Support/Debug.h modular. This requires it to not change 2014-04-21 22:55:11 +00:00
CMakeLists.txt The llvm_headers_do_not_build project needs to be excluded from the default build, otherwise it gets built (at least in Visual Studio 2013). 2014-01-28 16:07:10 +00:00
InitializePasses.h Atomics: promote ARM's IR-based atomics pass to CodeGen. 2014-04-17 18:22:47 +00:00
LinkAllIR.h [cleanup] Move the Dominators.h and Verifier.h headers into the IR 2014-01-13 09:26:24 +00:00
LinkAllPasses.h Revert "Revert "Add Constant Hoisting Pass" (r200034)" 2014-01-25 02:02:55 +00:00
Pass.h [C++11] More 'nullptr' conversion or in some cases just using a boolean check instead of comparing to nullptr. 2014-04-09 06:08:46 +00:00
PassAnalysisSupport.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +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 [C++11] More 'nullptr' conversion or in some cases just using a boolean check instead of comparing to nullptr. 2014-04-09 06:08:46 +00:00
PassSupport.h [C++11] More 'nullptr' conversion or in some cases just using a boolean check instead of comparing to nullptr. 2014-04-09 06:08:46 +00:00