llvm-6502/include/llvm/ADT
Chandler Carruth 5c5b3cf5b8 Teach the new SROA to handle cases where an alloca that has already been
scheduled for processing on the worklist eventually gets deleted while
we are processing another alloca, fixing the original test case in
PR13990.

To facilitate this, add a remove_if helper to the SetVector abstraction.
It's not easy to use the standard abstractions for this because of the
specifics of SetVectors types and implementation.

Finally, a nice small test case is included. Thanks to Benjamin for the
fantastic reduced test case here! All I had to do was delete some empty
basic blocks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165065 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-02 22:46:45 +00:00
..
APFloat.h Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 2012-09-27 10:14:43 +00:00
APInt.h Fix Doxygen issues: 2012-09-13 12:34:29 +00:00
APSInt.h Add operator== to APSInt. This will compare the signed bit before doing 2012-07-23 20:24:23 +00:00
ArrayRef.h Reduce alignment of SmallVector<T> to the required amount, rather than forcing 16-byte alignment. This fixes misaligned SmallVector accesses via ExtractValueInst's SmallVector data member. 2012-08-22 00:11:07 +00:00
BitVector.h Add a new optimization pass: Stack Coloring, that merges disjoint static allocations (allocas). Allocas are known to be 2012-09-06 09:17:37 +00:00
DAGDeltaAlgorithm.h Fix Doxygen issues: 2012-09-14 14:57:36 +00:00
DeltaAlgorithm.h Fix Doxygen issues: 2012-09-14 14:57:36 +00:00
DenseMap.h DenseMap: assert that we have found a bucket before we try to insert into it. 2012-09-22 01:24:16 +00:00
DenseMapInfo.h Fix integer undefined behavior due to signed left shift overflow in LLVM. 2012-08-24 23:29:28 +00:00
DenseSet.h Initialize DenseSets lazily. 2011-07-21 23:03:59 +00:00
DepthFirstIterator.h Fix a typo (the the => the) 2012-07-23 08:51:15 +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 Fix Doxygen issues: wrap code examples in \code and use \p to refer to 2012-09-15 20:22:05 +00:00
FoldingSet.h Add operator< for FoldingSetNodeID. 2012-09-08 04:25:29 +00:00
GraphTraits.h Change the Dominators recalculate() function to only rely on GraphTraits 2011-12-05 19:17:04 +00:00
Hashing.h Fix typo in comment. 2012-09-13 07:01:25 +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 Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +00:00
ImmutableIntervalMap.h Give ImmutableIntervalMap.h an include guard. 2011-04-24 15:46:46 +00:00
ImmutableList.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +00:00
ImmutableMap.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +00:00
ImmutableSet.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +00:00
IndexedMap.h SparseSet: Add support for key-derived indexes and arbitrary key types. 2012-04-20 20:05:28 +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 Reference IntrusiveRefCntPtr in doxygen doc of RefCountedBase to get a link to the pointer class documentation. 2012-08-01 14:53:13 +00:00
MapVector.h Make MapVector a bit more expensive but harder to misuse. We now only 2012-09-19 13:42:51 +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 Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +00:00
PackedVector.h PackedVector: Make the BitVector implementation configurable. 2012-09-28 16:40:29 +00:00
PointerIntPair.h Fix integer undefined behavior due to signed left shift overflow in LLVM. 2012-08-24 23:29:28 +00:00
PointerUnion.h Fixed few warnings. 2012-07-13 21:06:54 +00:00
PostOrderIterator.h Fix broken ipo_ext_iterator constructors. 2012-07-17 17:57:25 +00:00
PriorityQueue.h Make a few more LLVM headers parsable as standalone headers. 2009-11-05 23:01:30 +00:00
SCCIterator.h Avoid warnings about the parameter G being unused. 2011-10-20 08:56:41 +00:00
ScopedHashTable.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +00:00
SetOperations.h
SetVector.h Teach the new SROA to handle cases where an alloca that has already been 2012-10-02 22:46:45 +00:00
SmallBitVector.h Merge the SmallBitVector and BitVector unit tests with gtest's typed test magic and bring SmallBitVector up to date. 2012-06-16 10:51:07 +00:00
SmallPtrSet.h Use LLVM_DELETED_FUNCTION for copy constructors and copy assignment operators that aren't implemented. 2012-09-16 21:37:56 +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 Fix Doxygen issues: 2012-09-13 12:34:29 +00:00
SmallVector.h Fix Doxygen issues: 2012-09-13 12:34:29 +00:00
SparseBitVector.h Provide malloc-free sentinels for the SparseBitVector internals. 2012-09-28 15:36:41 +00:00
SparseSet.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +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 Remove 'static' from inline functions defined in header files. 2012-06-20 08:39:33 +00:00
StringExtras.h Add llvm::getOrdinalSuffix to get the appropriate -st, -nd, -rd, -th suffix. 2012-09-22 01:24:21 +00:00
StringMap.h Make StringMap's copy ctor non-explicit. 2012-04-14 09:04:57 +00:00
StringRef.h Fix Doxygen issues: 2012-09-13 12:34:29 +00:00
StringSet.h modernize stringset interface 2010-07-23 03:21:53 +00:00
StringSwitch.h Fix shadowed variable warning 2012-08-01 01:43:10 +00:00
TinyPtrVector.h Add range erase, element insert, and range insert methods to 2012-08-01 08:40:48 +00:00
Triple.h Support for generating ELF objects on Windows. 2012-10-02 18:38:34 +00:00
Twine.h Fix Doxygen issues: 2012-09-13 12:34:29 +00:00
UniqueVector.h
ValueMap.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:31:17 +00:00
VariadicFunction.h Fix a typo in VariadicFunction.h that leads to invalid code in macro expansion. 2012-08-15 18:48:14 +00:00