llvm-6502/lib
Chandler Carruth befdb1a642 [LCG] Incorporate the core trick of improvements on the naive Tarjan's
algorithm here: http://dl.acm.org/citation.cfm?id=177301.

The idea of isolating the roots has even more relevance when using the
stack not just to implement the DFS but also to implement the recursive
step. Because we use it for the recursive step, to isolate the roots we
need to maintain two stacks: one for our recursive DFS walk, and another
of the nodes that have been walked. The nice thing is that the latter
will be half the size. It also fixes a complete hack where we scanned
backwards over the stack to find the next potential-root to continue
processing. Now that is always the top of the DFS stack.

While this is a really nice improvement already (IMO) it further opens
the door for two important simplifications:

1) De-duplicating some of the code across the two different walks. I've
   actually made the duplication a bit worse in some senses with this
   patch because the two are starting to converge.
2) Dramatically simplifying the loop structures of both walks.

I wanted to do those separately as they'll be essentially *just* CFG
restructuring. This patch on the other hand actually uses different
datastructures to implement the algorithm itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207098 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-24 11:05:20 +00:00
..
Analysis [LCG] Incorporate the core trick of improvements on the naive Tarjan's 2014-04-24 11:05:20 +00:00
AsmParser
Bitcode
CodeGen [C++] Use 'nullptr'. 2014-04-24 06:44:33 +00:00
DebugInfo [Modules] Make Support/Debug.h modular. This requires it to not change 2014-04-21 22:55:11 +00:00
ExecutionEngine [C++] Use 'nullptr'. 2014-04-24 06:44:33 +00:00
IR llvm-cov: Add support for gcov's --long-file-names option 2014-04-23 21:44:55 +00:00
IRReader
LineEditor
Linker
LTO Create MCTargetOptions. 2014-04-23 11:16:03 +00:00
MC [C++] Use 'nullptr'. 2014-04-24 06:44:33 +00:00
Object [yaml2obj][ELF] Remove unnecessary space between namespace name and 2014-04-23 17:30:29 +00:00
Option
ProfileData ProfileData: Avoid unnecessary copies of CounterData 2014-04-23 18:50:16 +00:00
Support cl::ParseCommandLineOptions(): Use StringRef to receive sys::path::filename() instead of std::string. 2014-04-23 14:51:23 +00:00
TableGen
Target [asan] Fix instrumentation of x86 intel syntax inline assembly. 2014-04-24 09:56:15 +00:00
Transforms Allow vectorization of few missed llvm intrinsic calls in BBVectorizor by handling them in isVectorizableIntrinsic function. 2014-04-24 07:29:55 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile