llvm-6502/include/llvm/ADT
Chandler Carruth 5cd79bc14c Perform partial SROA on the helper hashing structure. I really wish the
optimizers could do this for us, but expecting partial SROA of classes
with template methods through cloning is probably expecting too much
heroics. With this change, the begin/end pointer pairs which indicate
the status of each loop iteration are actually passed directly into each
layer of the combine_data calls, and the inliner has a chance to see
when most of the combine_data function could be deleted by inlining.
Similarly for 'length'.

We have to be careful to limit the places where in/out reference
parameters are used as those will also defeat the inliner / optimizers
from properly propagating constants.

With this change, LLVM is able to fully inline and unroll the hash
computation of small sets of values, such as two or three pointers.
These now decompose into essentially straight-line code with no loops or
function calls.

There is still one code quality problem to be solved with the hashing --
LLVM is failing to nuke the alloca. It removes all loads from the
alloca, leaving only lifetime intrinsics and dead(!!) stores to the
alloca. =/ Very unfortunate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154264 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-07 20:01:31 +00:00
..
APFloat.h Replace the hashing functions on APInt and APFloat with overloads of the 2012-03-04 12:02:57 +00:00
APInt.h Move APInt::operator[] inline. 2012-03-14 00:38:15 +00:00
APSInt.h PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and 2010-12-07 08:25:19 +00:00
ArrayRef.h Introduce a new MutableArrayRef class, which refers to a series of mutable 2012-01-19 06:34:52 +00:00
BitVector.h Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
DAGDeltaAlgorithm.h Adding missing anchor to DATDeltaAlgorithm. 2011-12-07 06:44:23 +00:00
DeltaAlgorithm.h Fix comment. 2010-02-17 19:26:45 +00:00
DenseMap.h DenseMap: Perform the pod-like object optimization when the value type is POD-like, not the DenseMapInfo for it. 2012-04-06 10:43:44 +00:00
DenseMapInfo.h Fix various issues (or do cleanups) found by enabling certain MSVC warnings. 2012-02-13 06:30:56 +00:00
DenseSet.h Initialize DenseSets lazily. 2011-07-21 23:03:59 +00:00
DepthFirstIterator.h Simplify this code. 2011-03-01 22:07:32 +00:00
edit_distance.h Add function for computing the edit distance of two arrays. 2012-02-15 22:13:07 +00:00
EquivalenceClasses.h Merge System into Support. 2010-11-29 18:16:10 +00:00
FoldingSet.h Revert commit 152300 (ddunbar) since it still seems to be breaking 2012-03-08 09:32:21 +00:00
GraphTraits.h Change the Dominators recalculate() function to only rely on GraphTraits 2011-12-05 19:17:04 +00:00
Hashing.h Perform partial SROA on the helper hashing structure. I really wish the 2012-04-07 20:01:31 +00:00
ilist_node.h Fix const ilist_node::get{Prev,Next}Node() to actually compile. Picky, picky. 2010-05-13 18:35:02 +00:00
ilist.h Fixes the MSVC build. 2012-03-14 22:36:10 +00:00
ImmutableIntervalMap.h Give ImmutableIntervalMap.h an include guard. 2011-04-24 15:46:46 +00:00
ImmutableList.h Add ImmutableList::contains(). Patch by Rui Paulo! 2011-07-06 21:59:48 +00:00
ImmutableMap.h Add getTreeFactory() to ImmutableSet to allow construction of ImmutableSetRef from an ImmutableSet object. 2011-09-23 19:10:26 +00:00
ImmutableSet.h Make sure ImmutableSet never inserts Tombstone/Entry into DenseMap. 2012-03-20 22:56:27 +00:00
IndexedMap.h Remove MachineRegisterInfo::getLastVirtReg(), it was giving wrong results 2011-01-09 21:58:20 +00:00
InMemoryStruct.h ADT/InMemoryStruct: Add an experimental helper class intended for use in 2010-11-27 08:11:02 +00:00
IntEqClasses.h Use IntEqClasses to compute connected components of live intervals. 2010-12-21 00:48:17 +00:00
IntervalMap.h Add a few missing 'template' keywords 2012-03-11 02:22:41 +00:00
IntrusiveRefCntPtr.h RefCountedBaseVPTR needs the IntrusiveRefCntPtrInfo as friend, 2012-01-31 19:58:34 +00:00
NullablePtr.h add a new NullablePtr class which makes it more obvious in API 2010-07-24 18:47:46 +00:00
Optional.h Poison the relational operators ==, !=, <, <=, >=, > on llvm::Optional 2011-02-11 18:13:20 +00:00
OwningPtr.h revert r148688 too, this isn't safe for DenseMap use. When DenseMap resizes, it will need to copy around arbitrary pointers 2012-01-23 15:10:41 +00:00
PackedVector.h Constify PackedVector::reference::operator T(). 2011-06-15 19:18:13 +00:00
PointerIntPair.h PointerUnion::getAddrOf() does not need to be template since we can only 2012-03-06 07:14:54 +00:00
PointerUnion.h Add a few missing 'template' keywords 2012-03-11 02:22:41 +00:00
PostOrderIterator.h An interface for iterating over a loop's blocks in DFS order. 2011-08-03 23:27:28 +00:00
PriorityQueue.h
SCCIterator.h Avoid warnings about the parameter G being unused. 2011-10-20 08:56:41 +00:00
ScopedHashTable.h add the ability to walk the scope tree and insert at not-the-current 2011-02-27 22:51:57 +00:00
SetOperations.h
SetVector.h add a method to improve compatibility with SmallVector. 2011-12-20 00:03:41 +00:00
SmallBitVector.h Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
SmallPtrSet.h SmallPtrSet: Provide a more efficient implementation of swap than the default triple-copy std::swap. 2012-03-06 20:40:02 +00:00
SmallSet.h allow clients of SmallSet to specify their own comparison function for the set. 2012-01-05 17:35:07 +00:00
SmallString.h Additional methods for SmallString. 2012-01-24 23:43:59 +00:00
SmallVector.h Remove an old hack for pre-2005 MSVC. We don't support ancient microsoft compilers anymore. 2012-03-13 20:07:36 +00:00
SparseBitVector.h What's better than fixing and simplifying broken hash functions? 2012-03-07 09:54:06 +00:00
SparseSet.h GCC warns about a comparison between signed and unsigned values. 2012-02-23 08:23:53 +00:00
Statistic.h Silence tsan false-positives (tsan can't track things which are only safe due to 2011-12-05 23:07:05 +00:00
STLExtras.h move tier out of an anonymous namespace, it doesn't make sense 2011-07-21 06:21:31 +00:00
StringExtras.h Move ftostr into its last user (cppbackend) and simplify it a bit. 2012-03-23 11:26:29 +00:00
StringMap.h Various public StringMap methods take or return "MapEntryTy", make it public. 2012-01-23 21:42:52 +00:00
StringRef.h Make StringRef::getAsInteger work with all integer types. Before this change 2012-03-10 23:02:54 +00:00
StringSet.h modernize stringset interface 2010-07-23 03:21:53 +00:00
StringSwitch.h Finish full attribute class emission for clang. 2010-08-18 23:23:09 +00:00
TinyPtrVector.h Missing change in r152106 for TinyPtrVector. 2012-03-07 03:37:32 +00:00
Trie.h Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
Triple.h Add triple support for the IBM BG/P and BG/Q supercomputers. 2012-04-02 18:31:33 +00:00
Twine.h Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
UniqueVector.h
ValueMap.h DenseMap: Perform the pod-like object optimization when the value type is POD-like, not the DenseMapInfo for it. 2012-04-06 10:43:44 +00:00
VariadicFunction.h As Doug pointed out (and I really should know), it is perfectly easy to 2011-12-17 10:20:15 +00:00