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 IR: Don't constant fold GEP bitcasts between different address spaces 2013-02-27 02:26:42 +00:00
ConstantFold.h
Constants.cpp Fix a scalability issue with complex ConstantExprs. 2013-04-13 12:53:18 +00:00
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 Cleanup naming: DataLayout s/TD/DL/ 2013-04-16 15:41:18 +00:00
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 Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter). 2013-04-20 05:14:40 +00:00
GCOV.cpp
Globals.cpp
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp
Instructions.cpp Revert r177675. This is language-specific and shouldn't be in the API. 2013-03-22 18:46:32 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
LeakDetector.cpp
LeaksContext.h
LLVMBuild.txt
LLVMContext.cpp Memory Dependence Analysis (not mem-dep test) take advantage of "invariant.load" metadata. 2013-03-06 17:48:48 +00:00
LLVMContextImpl.cpp
LLVMContextImpl.h Cache the result of Function::getIntrinsicID() in a DenseMap attached to the LLVMContext. 2013-03-01 18:48:54 +00:00
Makefile
Metadata.cpp Struct-path aware TBAA: update getMostGenericTBAA 2013-04-22 23:00:44 +00:00
Module.cpp Removed extraneous #include "LLVMContextImpl.h" from lib/IR/Module.cpp 2013-03-01 21:37:24 +00:00
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