llvm-project/llvm/test
Owen Anderson c21c100f3d Completely rework the datastructure GVN uses to represent the value number to leader mapping. Previously,
this was a tree of hashtables, and a query recursed into the table for the immediate dominator ad infinitum
if the initial lookup failed.  This led to really bad performance on tall, narrow CFGs.

We can instead replace it with what is conceptually a multimap of value numbers to leaders (actually
represented by a hashtable with a list of Value*'s as the value type), and then
determine which leader from that set to use very cheaply thanks to the DFS numberings maintained by
DominatorTree.  Because there are typically few duplicates of a given value, this scan tends to be
quite fast.  Additionally, we use a custom linked list and BumpPtr allocation to avoid any unnecessary
allocation in representing the value-side of the multimap.

This change brings with it a 15% (!) improvement in the total running time of GVN on 403.gcc, which I
think is pretty good considering that includes all the "real work" being done by MemDep as well.

The one downside to this approach is that we can no longer use GVN to perform simple conditional progation,
but that seems like an acceptable loss since we now have LVI and CorrelatedValuePropagation to pick up
the slack.  If you see conditional propagation that's not happening, please file bugs against LVI or CVP.

llvm-svn: 119714
2010-11-18 18:32:40 +00:00
..
Analysis Delete unneeded ssp attributes. 2010-11-11 21:08:46 +00:00
Archive These tests are no longer stored in *CVS*. 2010-08-04 15:58:01 +00:00
Assembler The pshufw instruction came about in MMX2 when SSE was introduced. Don't place 2010-10-04 20:24:01 +00:00
Bindings/Ocaml Don't test a removed function. 2010-10-09 15:53:25 +00:00
Bitcode Testcase for PR8494 (invalid bitcode crashing the bitcode reader). 2010-10-28 15:57:30 +00:00
BugPoint XFAIL this on mingw, following remove_arguments_test.ll. 2010-08-24 20:54:50 +00:00
CodeGen Change CodeGen to use .loc directives. This produces a lot more readable output 2010-11-18 02:04:25 +00:00
DebugInfo Change CodeGen to use .loc directives. This produces a lot more readable output 2010-11-18 02:04:25 +00:00
ExecutionEngine lli: Switch to using ParseIRFile, for consistency with other LLVM tools. 2010-11-13 00:28:01 +00:00
Feature remove unions from LLVM IR. They are severely buggy and not 2010-08-28 04:09:24 +00:00
FrontendAda
FrontendC Test for llvm-gcc patch 119392. 2010-11-16 21:57:15 +00:00
FrontendC++ Generalize DISubprogram element to encode various flags instead of just one boolean for isArtificial. 2010-09-29 21:04:46 +00:00
FrontendFortran
FrontendObjC Update tests to not rely on input file's absolute path. 2010-07-27 18:13:53 +00:00
FrontendObjC++ Temporarily revert r117079; it broke a tester. Radar 6635085. 2010-10-22 18:44:22 +00:00
Integer we are past the point where these tests are useful. 2010-09-02 22:32:02 +00:00
LLVMC Remove -llvmc-temp-hack from tblgen. 2010-10-23 07:32:53 +00:00
Linker Fix PR8300 by remembering to keep the bitcast in all cases. 2010-10-19 02:02:57 +00:00
MC Try again at providing Thumb2 encodings for basic multiplication operators. 2010-11-18 01:08:42 +00:00
Other Make BasicAliasAnalysis a normal AliasAnalysis implementation which 2010-10-18 18:04:47 +00:00
Scripts test/Scripts/macho-dump: Make hack for Python-2.4. [PR7995] 2010-10-29 01:14:16 +00:00
TableGen Generalize tblgen's dag parsing logic to handle arbitrary expressions 2010-10-06 04:55:48 +00:00
Transforms Completely rework the datastructure GVN uses to represent the value number to leader mapping. Previously, 2010-11-18 18:32:40 +00:00
Unit Try r96559 for the third time. This time the shared library is only built if 2010-02-25 06:34:33 +00:00
Verifier Reject unrepresentable pointer types in intrinsics. Fixes PR7316. 2010-08-08 06:12:09 +00:00
lib Eliminate llvmgcc_version testing variable. 2010-02-23 07:56:28 +00:00
CMakeLists.txt CMake: Add the new option "LLVM_LIT_ARGS". 2010-11-11 04:09:35 +00:00
Makefile test/Makefile: Force lit -j1 on Cygwin. 2010-10-22 09:40:37 +00:00
Makefile.tests Switch .bc/.ll Makefile rules to use LLVM{CC,CXX} instead of LLVMG{CC,XX} 2010-02-23 10:28:06 +00:00
TestRunner.sh Use exec. 2010-08-29 14:49:00 +00:00
lit.cfg Spelling fixes in comments. 2010-09-13 13:32:22 +00:00
lit.site.cfg.in tests: Propogate LLVM_SRC_ROOT and PYTHON_EXECUTABLE environment variables to tests. 2010-06-12 16:21:19 +00:00
site.exp.in Eliminate llvmgcc_version testing variable. 2010-02-23 07:56:28 +00:00