llvm-6502/lib/VMCore
Dan Gohman b08ba8824e Fix (at least) quadratic worst-case complexity in DominanceFrontier::splitBlock:
don't visit all blocks in the function, and don't iterate over the split blocks'
predecessor lists for each block visited.

Also, remove the special-case test for the entry block. Splitting the entry
block isn't common enough to make this worthwhile.

This fixes a major compile-time bottleneck which is exposed now that
LoopSimplify isn't being redundantly run both before and after
DominanceFrontier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109408 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26 17:55:15 +00:00
..
AsmWriter.cpp Make NamedMDNode not be a subclass of Value, and simplify the interface 2010-07-21 23:38:33 +00:00
Attributes.cpp
AutoUpgrade.cpp undo 80 column trespassing I caused 2010-07-22 10:37:47 +00:00
BasicBlock.cpp
CMakeLists.txt Convert the internal PassRegistrar class into a new, external PassRegistry class. No intended functionality change at this point. 2010-07-20 18:39:06 +00:00
ConstantFold.cpp Constant fold x == undef to undef. 2010-06-28 21:30:07 +00:00
ConstantFold.h
Constants.cpp Fix PR7658, a problem where type refinement can trigger 2010-07-17 06:13:52 +00:00
ConstantsContext.h Fix PR7658, a problem where type refinement can trigger 2010-07-17 06:13:52 +00:00
Core.cpp Expose BasicBlock::moveBefore and moveAfter in C API, patch 2010-07-19 15:31:07 +00:00
DebugLoc.cpp
Dominators.cpp Fix (at least) quadratic worst-case complexity in DominanceFrontier::splitBlock: 2010-07-26 17:55:15 +00:00
Function.cpp
Globals.cpp
GVMaterializer.cpp
InlineAsm.cpp Reduce string trashing. 2010-07-25 23:18:32 +00:00
Instruction.cpp Rename removeAllMetadata to clearMetadataHashEntries and simplify 2010-07-20 22:25:04 +00:00
Instructions.cpp eliminate CallInst::ArgOffset 2010-07-16 09:38:02 +00:00
IntrinsicInst.cpp warmup ritual: use high-level argument accessors 2010-06-22 19:46:37 +00:00
IRBuilder.cpp
LeakDetector.cpp
LeaksContext.h
LLVMContext.cpp Add support for remapping metadata kind IDs when reading in a 2010-07-20 21:42:28 +00:00
LLVMContextImpl.cpp
LLVMContextImpl.h
Makefile
Metadata.cpp Make NamedMDNode not be a subclass of Value, and simplify the interface 2010-07-21 23:38:33 +00:00
Module.cpp Make NamedMDNode not be a subclass of Value, and simplify the interface 2010-07-21 23:38:33 +00:00
Pass.cpp Move the smarts of AnalysisGroup registration into PassRegistry. 2010-07-21 17:52:45 +00:00
PassManager.cpp Pull out r108755. After offline discussion with Chris, we're going to go a different direction with this. 2010-07-20 16:55:05 +00:00
PassRegistry.cpp Move the smarts of AnalysisGroup registration into PassRegistry. 2010-07-21 17:52:45 +00:00
PrintModulePass.cpp Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). 2010-07-21 22:09:45 +00:00
SymbolTableListTraitsImpl.h
Type.cpp PR7704: A function is not allowed to return a function; make sure to enforce 2010-07-24 22:58:04 +00:00
TypesContext.h tidy up 2010-07-16 21:20:46 +00:00
TypeSymbolTable.cpp
Use.cpp precompute 20 tags 2010-07-19 14:48:15 +00:00
Value.cpp Clarify that if a new value handle is added while dropping value handles 2010-07-24 12:09:22 +00:00
ValueSymbolTable.cpp Make NamedMDNode not be a subclass of Value, and simplify the interface 2010-07-21 23:38:33 +00:00
ValueTypes.cpp Adding a v8i64 512-bit vector type. This will be used to model ARM NEON intrinsics which translate into a pair of vld / vst instructions that can load / store 8 consecutive 64-bit (D) registers. 2010-05-13 23:55:47 +00:00
Verifier.cpp Make NamedMDNode not be a subclass of Value, and simplify the interface 2010-07-21 23:38:33 +00:00