llvm-6502/lib/Transforms/Scalar
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
..
ADCE.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00
BasicBlockPlacement.cpp Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
CMakeLists.txt Introduce a new SROA implementation. 2012-09-14 09:22:59 +00:00
CodeGenPrepare.cpp Do not delete BBs if their addresses are taken. rdar://12396696 2012-09-28 23:58:57 +00:00
ConstantProp.cpp Last bit of TargetLibraryInfo propagation. Also fixed a case for TargetData 2011-12-01 21:29:16 +00:00
CorrelatedValuePropagation.cpp CorrelatedPropagation: BasicBlock::removePredecessor can simplify PHI nodes. If the it's the condition of a SwitchInst, reload it. 2012-09-28 10:42:50 +00:00
DCE.cpp Make MemoryBuiltins aware of TargetLibraryInfo. 2012-08-29 15:32:21 +00:00
DeadStoreElimination.cpp Don't forget that strcpy and friends return a pointer to the destination, so 2012-09-25 01:55:59 +00:00
EarlyCSE.cpp Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments. 2012-09-15 17:09:36 +00:00
GlobalMerge.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00
GVN.cpp Release build: guard dump functions with 2012-09-12 05:06:18 +00:00
IndVarSimplify.cpp Make MemoryBuiltins aware of TargetLibraryInfo. 2012-08-29 15:32:21 +00:00
JumpThreading.cpp Make MemoryBuiltins aware of TargetLibraryInfo. 2012-08-29 15:32:21 +00:00
LICM.cpp LICM may hoist an instruction with undefined behavior above a trap. 2012-09-04 10:25:04 +00:00
LLVMBuild.txt LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
LoopDeletion.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00
LoopIdiomRecognize.cpp LoopIdiom: Give up when the loop is not in canonical form. 2012-09-21 17:27:23 +00:00
LoopInstSimplify.cpp Make MemoryBuiltins aware of TargetLibraryInfo. 2012-08-29 15:32:21 +00:00
LoopRotation.cpp LoopRotation: Make the brute force DomTree update more brute force. 2012-09-02 11:57:22 +00:00
LoopStrengthReduce.cpp LSR critical edge splitting fix for PR13756. 2012-09-18 17:51:33 +00:00
LoopUnrollPass.cpp Remove the `hasFnAttr' method from Function. 2012-09-26 21:48:26 +00:00
LoopUnswitch.cpp Remove the `hasFnAttr' method from Function. 2012-09-26 21:48:26 +00:00
LowerAtomic.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
MemCpyOptimizer.cpp MemCpyOpt: When forming a memset from stores also take GEP constexprs into account. 2012-09-13 16:29:49 +00:00
ObjCARC.cpp Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-18 02:01:41 +00:00
Reassociate.cpp Stop reassociate from looking through expressions of arbitrary complexity. This 2012-07-26 09:26:40 +00:00
Reg2Mem.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00
Scalar.cpp Introduce a new SROA implementation. 2012-09-14 09:22:59 +00:00
ScalarReplAggregates.cpp Port the global copy optimization from the SROA pass to InstCombine. 2012-08-21 08:39:44 +00:00
SCCP.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00
SimplifyCFGPass.cpp Update function names to conform to guidelines. 2012-09-06 00:59:08 +00:00
SimplifyLibCalls.cpp SimplifyLibCalls: Give all safely-shrinkable libcalls the same treatment. 2012-08-22 19:39:15 +00:00
Sink.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00
SROA.cpp Teach the new SROA to handle cases where an alloca that has already been 2012-10-02 22:46:45 +00:00
TailRecursionElimination.cpp Clean whitespaces. 2012-07-24 10:51:42 +00:00