Go to file
Chandler Carruth c5026b670e [LCG] Actually test the *basic* edge removal bits (IE, the non-SCC
bits), and discover that it's totally broken. Yay tests. Boo bug. Fix
the basic edge removal so that it works by nulling out the removed edges
rather than actually removing them. This leaves the indices valid in the
map from callee to index, and preserves some of the locality for
iterating over edges. The iterator is made bidirectional to reflect that
it now has to skip over null entries, and the skipping logic is layered
onto it.

As future work, I would like to track essentially the "load factor" of
the edge list, and when it falls below a threshold do a compaction.

An alternative I considered (and continue to consider) is storing the
callees in a doubly linked list where each element of the list is in
a set (which is essentially the classical linked-hash-table
datastructure). The problem with that approach is that either you need
to heap allocate the linked list nodes and use pointers to them, or use
a bucket hash table (with even *more* linked list pointer overhead!),
etc. It's pretty easy to get 5x overhead for values that are just
pointers. So far, I think punching holes in the vector, and periodic
compaction is likely to be much more efficient overall in the space/time
tradeoff.

llvm-svn: 207619
2014-04-30 07:45:27 +00:00
clang Add a triple to new test. 2014-04-30 04:54:42 +00:00
clang-tools-extra Fix the message for "Move constructor declared explicit". 2014-04-29 15:50:14 +00:00
compiler-rt [Sanitizer] Add rudimentary support for wide-character strings to scanf/printf interceptors 2014-04-28 20:40:25 +00:00
debuginfo-tests relax testcase for LLDB output format compatibility. 2014-03-19 23:06:18 +00:00
libclc Introduce M_LOG2E_F and M_LOG2E 2014-03-28 21:19:03 +00:00
libcxx Fix bug . Add tests for tuples of all the smart pointers (except auto_ptr) 2014-04-26 05:19:48 +00:00
libcxxabi Add unwind test case that checks restoring of float registers (such as on AArch64) 2014-04-29 01:08:23 +00:00
lld [PECOFF] Fix priority of locally imported symbols. 2014-04-30 03:31:46 +00:00
lldb Correct offsets in the debugserver arm back end for the s and d registers so we get the offsets 2014-04-30 00:30:07 +00:00
llvm [LCG] Actually test the *basic* edge removal bits (IE, the non-SCC 2014-04-30 07:45:27 +00:00
openmp Add the offload directory which contains the code needed to support 2014-04-09 15:40:23 +00:00
polly Add missing include. 2014-04-30 07:26:28 +00:00