llvm/lib/VMCore
Jay Foad 72f5f313d8 Change how PHINodes store their operands.
Change PHINodes to store simple pointers to their incoming basic blocks,
instead of full-blown Uses.

Note that this loses an optimization in SplitCriticalEdge(), because we
can no longer walk the use list of a BasicBlock to find phi nodes. See
the comment I removed starting "However, the foreach loop is slow for
blocks with lots of predecessors".

Extend replaceAllUsesWith() on a BasicBlock to also update any phi
nodes in the block's successors. This mimics what would have happened
when PHINodes were proper Users of their incoming blocks. (Note that
this only works if OldBB->replaceAllUsesWith(NewBB) is called when
OldBB still has a terminator instruction, so it still has some
successors.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133435 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-20 14:38:01 +00:00
..
AsmWriter.cpp Make better use of the PHINode API. 2011-06-20 14:18:48 +00:00
Attributes.cpp Add a new function attribute, nonlazybind, which inhibits lazy-loading 2011-06-15 20:36:13 +00:00
AutoUpgrade.cpp rework the remaining autoupgrade logic to use a StringRef instead of creating a 2011-06-18 18:56:39 +00:00
BasicBlock.cpp Change how PHINodes store their operands. 2011-06-20 14:38:01 +00:00
CMakeLists.txt remove StandardPasses, it has been replaced with PassManagerBuilder 2011-05-22 00:30:45 +00:00
ConstantFold.cpp Revamp the "ConstantStruct::get" methods. Previously, these were scattered 2011-06-20 04:01:31 +00:00
ConstantFold.h Remove casts between Value** and Constant**, which won't work if a 2011-01-14 08:07:43 +00:00
Constants.cpp Revamp the "ConstantStruct::get" methods. Previously, these were scattered 2011-06-20 04:01:31 +00:00
ConstantsContext.h PR9214: Convert ConstantExpr::getIndices() to return an ArrayRef, plus 2011-04-13 15:22:40 +00:00
Core.cpp Revamp the "ConstantStruct::get" methods. Previously, these were scattered 2011-06-20 04:01:31 +00:00
DebugInfoProbe.cpp Clear list of instructions without DebugLoc. 2011-05-23 17:34:18 +00:00
DebugLoc.cpp PR9214: Convert Metadata API to use ArrayRef. 2011-04-21 19:59:31 +00:00
Dominators.cpp Spruce up the error output. 2011-03-29 04:28:26 +00:00
Function.cpp Fix typo in comment. 2011-06-17 13:36:06 +00:00
Globals.cpp hoist GlobalValue::removeDeadConstantUsers up to being a method on Constant. 2011-02-18 04:41:42 +00:00
GVMaterializer.cpp Kill ModuleProvider and ghost linkage by inverting the relationship between 2010-01-27 20:34:15 +00:00
InlineAsm.cpp Another possible bug. Stopgap until we can autogenerate tables and 2011-06-03 22:09:12 +00:00
Instruction.cpp AttrListPtr has an overloaded operator== which does this for us, we should use 2011-01-26 09:23:19 +00:00
Instructions.cpp Change how PHINodes store their operands. 2011-06-20 14:38:01 +00:00
IntrinsicInst.cpp warmup ritual: use high-level argument accessors 2010-06-22 19:46:37 +00:00
IRBuilder.cpp Add CreateLifetimeStart and CreateLifetimeEnd to the IRBuilder, with plans to 2011-05-21 23:14:36 +00:00
LeakDetector.cpp Merge System into Support. 2010-11-29 18:16:10 +00:00
LeaksContext.h Fix a bunch of namespace polution. 2010-04-15 17:08:50 +00:00
LLVMContext.cpp Add missing standard headers. Patch by Joerg Sonnenberger! 2010-12-19 20:43:38 +00:00
LLVMContextImpl.cpp More SmallVectorImpls. 2010-10-12 00:15:27 +00:00
LLVMContextImpl.h eliminate the Type::getDescription() method, using "<<" instead. This 2011-06-18 21:18:23 +00:00
Makefile Enable RTTI again. While this works fine for LLVM, it creates an ABI 2010-04-14 05:51:59 +00:00
Metadata.cpp PR9214: Convert Metadata API to use ArrayRef. 2011-04-21 19:59:31 +00:00
Module.cpp Clarify the ownership model of LLVMContext and Module. Namely, contexts own 2010-09-08 18:03:32 +00:00
Pass.cpp Another step towards getting rid of static ctors for pass registration: have INITIALIZE_PASS AND INITIALIZE_AG_PASS 2010-10-05 22:58:16 +00:00
PassManager.cpp Basic PassManager diagnostics. 2011-06-03 00:48:58 +00:00
PassRegistry.cpp Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
PrintModulePass.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
SymbolTableListTraitsImpl.h Fold the useful features of alist and alist_node into ilist, and 2008-07-28 21:51:04 +00:00
Type.cpp fix the varargs version of StructType::get to not require an LLVMContext, making usage 2011-06-18 22:48:56 +00:00
TypesContext.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
TypeSymbolTable.cpp eliminate the Type::getDescription() method, using "<<" instead. This 2011-06-18 21:18:23 +00:00
Use.cpp Remove the AugmentedUse struct. 2011-06-20 14:12:33 +00:00
User.cpp Change how PHINodes store their operands. 2011-06-20 14:38:01 +00:00
Value.cpp Change how PHINodes store their operands. 2011-06-20 14:38:01 +00:00
ValueSymbolTable.cpp eliminate the Type::getDescription() method, using "<<" instead. This 2011-06-18 21:18:23 +00:00
ValueTypes.cpp rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for 2010-12-21 02:38:05 +00:00
Verifier.cpp Change how PHINodes store their operands. 2011-06-20 14:38:01 +00:00