llvm-6502/lib
Chandler Carruth b8087451ca The hash function for MI expressions, used by MachineCSE, is really
broken. This patch fixes the superficial problems which lead to the
intractably slow compile times reported in PR13225.

The specific issue is that we were failing to include the *offset* of
a global variable in the hash code. Oops. This would in turn cause all
MIs which were only distinguishable due to operating on different
offsets of a global variable to produce identical hash functions. In
some of the test cases attached to the PR I saw hash table activity
where there were O(1000) probes-per-lookup *on average*. A very few
entries were responsible for most of these probes.

There is still quite a bit more to do here. The ad-hoc layering of data
in MachineOperands makes them *extremely* brittle to hash correctly.
We're missing quite a few other cases, the only ones I've fixed here are
the specific MO types which were allowed through the assert() in
getOffset().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159741 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-05 10:03:57 +00:00
..
Analysis PHINode::hasConstantValue(): return undef if the PHI is fully recursive. 2012-07-03 21:15:40 +00:00
Archive Include cstdio in a few place that depended on getting it transitively through StringExtras.h 2012-03-23 11:35:30 +00:00
AsmParser Extend the IL for selecting TLS models (PR9788) 2012-06-23 11:37:03 +00:00
Bitcode llvm/lib: [CMake] Add explicit dependency to intrinsics_gen. 2012-06-24 13:32:01 +00:00
CodeGen The hash function for MI expressions, used by MachineCSE, is really 2012-07-05 10:03:57 +00:00
DebugInfo Fix a bug in DebugInfo lib, extend a comment for one of the methods 2012-07-04 09:42:54 +00:00
ExecutionEngine Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and 2012-06-28 00:05:13 +00:00
Linker Extend the IL for selecting TLS models (PR9788) 2012-06-23 11:37:03 +00:00
MC MCContext.cpp: Fixup for my odd previous commit. No functional changes. 2012-07-03 06:01:27 +00:00
Object Added accessors for getting coff_relocation info 2012-06-18 19:47:16 +00:00
Support Enable automatic GCC<->LLVM intrinsic translation for mips. 2012-06-28 19:09:53 +00:00
TableGen Emit TableGen's header comment with C-style comments, so it can be used from C89 code. 2012-06-19 17:04:16 +00:00
Target Make X86 call and return instructions non-variadic. 2012-07-04 23:53:27 +00:00
Transforms [tsan] fix compile-time falilure found while building Chromium with tsan (tsan issue #3). A unit test will follow separately. 2012-07-05 09:07:31 +00:00
VMCore PHINode::hasConstantValue(): return undef if the PHI is fully recursive. 2012-07-03 21:15:40 +00:00
CMakeLists.txt Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Remove more of llvmc and dependencies. 2011-09-20 00:34:27 +00:00