llvm-6502/lib/IR
Jakob Stoklund Olesen a88d974ce2 Speed up Value::isUsedInBasicBlock() for long use lists.
This is expanding Ben's original heuristic for short basic blocks to
also work for longer basic blocks and huge use lists.

Scan the basic block and the use list in parallel, terminating the
search when the shorter list ends. In almost all cases, either the basic
block or the use list is short, and the function returns quickly.

In one crazy test case with very long use chains, CodeGenPrepare runs
400x faster. When compiling ARMDisassembler.cpp it is 5x faster.

<rdar://problem/13840497>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181851 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-14 23:45:56 +00:00
..
AsmWriter.cpp Pull up AssemblyWriter interface into header to allow subclassing 2013-05-08 20:38:31 +00:00
AttributeImpl.h Now that the underlying issue is fixed, revert r180750 and r180722. 2013-05-01 13:07:03 +00:00
Attributes.cpp Now that the underlying issue is fixed, revert r180750 and r180722. 2013-05-01 13:07:03 +00:00
AutoUpgrade.cpp
BasicBlock.cpp
CMakeLists.txt
ConstantFold.cpp
ConstantFold.h
Constants.cpp
ConstantsContext.h Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
Core.cpp This patch breaks up Wrap.h so that it does not have to include all of 2013-05-01 20:59:00 +00:00
DataLayout.cpp
DebugInfo.cpp PR14492: Debug Info: Support for values of non-integer non-type template parameters. 2013-05-10 21:52:07 +00:00
DebugLoc.cpp
DIBuilder.cpp PR14492: Debug Info: Support for values of non-integer non-type template parameters. 2013-05-10 21:52:07 +00:00
Dominators.cpp
Function.cpp
GCOV.cpp
Globals.cpp
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp
Instructions.cpp
IntrinsicInst.cpp
IRBuilder.cpp
LeakDetector.cpp
LeaksContext.h
LLVMBuild.txt
LLVMContext.cpp
LLVMContextImpl.cpp
LLVMContextImpl.h
Makefile
Metadata.cpp
Module.cpp
Pass.cpp
PassManager.cpp Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
PassRegistry.cpp
PrintModulePass.cpp
SymbolTableListTraitsImpl.h
Type.cpp Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
TypeFinder.cpp
Use.cpp
User.cpp
Value.cpp Speed up Value::isUsedInBasicBlock() for long use lists. 2013-05-14 23:45:56 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp
Verifier.cpp Add some constraints to use of 'returned': 2013-04-23 16:31:56 +00:00