llvm/lib/Transforms/Utils
Wan Xiaofei 887f9c5ec1 Quick look-up for block in loop.
This patch implements quick look-up for block in loop by maintaining a hash set for blocks.
It improves the efficiency of loop analysis a lot, the biggest improvement could be 5-6%(458.sjeng).
Below are the compilation time for our benchmark in llc before & after the patch.

Benchmark	llc - trunk		llc - patched	
401.bzip2	0.339081	100.00%	0.329657	102.86%
403.gcc		19.853966	100.00%	19.605466	101.27%
429.mcf		0.049823	100.00%	0.048451	102.83%
433.milc	0.514898	100.00%	0.510217	100.92%
444.namd	1.109328	100.00%	1.103481	100.53%
445.gobmk	4.988028	100.00%	4.929114	101.20%
456.hmmer	0.843871	100.00%	0.825865	102.18%
458.sjeng	0.754238	100.00%	0.714095	105.62%
464.h264ref	2.9668		100.00%	2.90612		102.09%
471.omnetpp	4.556533	100.00%	4.511886	100.99%
bitmnp01	0.038168	100.00%	0.0357		106.91%
idctrn01	0.037745	100.00%	0.037332	101.11%
libquake2	3.78689		100.00%	3.76209		100.66%
libquake_	2.251525	100.00%	2.234104	100.78%
linpack		0.033159	100.00%	0.032788	101.13%
matrix01	0.045319	100.00%	0.043497	104.19%
nbench		0.333161	100.00%	0.329799	101.02%
tblook01	0.017863	100.00%	0.017666	101.12%
ttsprk01	0.054337	100.00%	0.053057	102.41%

Reviewer	: Andrew Trick <atrick@apple.com>, Hal Finkel <hfinkel@anl.gov>
Approver	: Andrew Trick <atrick@apple.com>
Test		: Pass make check-all & llvm test-suite


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193460 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-26 03:08:02 +00:00
..
BasicBlockUtils.cpp UpdatePHINodes in BasicBlockUtils should not crash on duplicate predecessors 2013-10-04 23:41:05 +00:00
BreakCriticalEdges.cpp Remove the very substantial, largely unmaintained legacy PGO 2013-10-02 15:42:23 +00:00
BuildLibCalls.cpp
BypassSlowDivision.cpp
CloneFunction.cpp
CloneModule.cpp
CMakeLists.txt Optimize more linkonce_odr values during LTO. 2013-10-21 17:14:55 +00:00
CmpInstAnalysis.cpp
CodeExtractor.cpp Revert patches to add case-range support for PR1255. 2013-09-09 19:14:35 +00:00
DemoteRegToStack.cpp Reimplement isPotentiallyReachable to make nocapture deduction much stronger. 2013-07-27 01:24:00 +00:00
FlattenCFG.cpp Convert manual insert point restores to the new RAII object. 2013-09-30 15:40:17 +00:00
GlobalStatus.cpp Handle calls and invokes in GlobalStatus. 2013-10-25 21:29:52 +00:00
InlineFunction.cpp Inliner: Handle readonly attribute per argument when adding memcpy 2013-10-24 16:38:33 +00:00
InstructionNamer.cpp
IntegerDivision.cpp
LCSSA.cpp Quick look-up for block in loop. 2013-10-26 03:08:02 +00:00
LLVMBuild.txt
Local.cpp Don't eliminate a partially redundant load if it's in a landing pad. 2013-10-21 04:09:17 +00:00
LoopSimplify.cpp
LoopUnroll.cpp Replace some unnecessary vector copies with references. 2013-09-15 22:04:42 +00:00
LoopUnrollRuntime.cpp
LowerExpectIntrinsic.cpp Fix spelling intruction -> instruction. 2013-09-28 11:46:15 +00:00
LowerInvoke.cpp Remove several unused variables. 2013-10-01 13:32:03 +00:00
LowerSwitch.cpp Revert patches to add case-range support for PR1255. 2013-09-09 19:14:35 +00:00
Makefile
Mem2Reg.cpp Revert r187191, which broke opt -mem2reg on the testcases included in PR16867. 2013-08-13 22:51:58 +00:00
MetaRenamer.cpp Add 'const' qualifier to some arrays. 2013-07-15 08:02:13 +00:00
ModuleUtils.cpp Respect llvm.used in Internalize. 2013-07-25 03:23:25 +00:00
PromoteMemoryToRegister.cpp Add a function object to compare the first or second component of a std::pair. 2013-08-24 12:54:27 +00:00
SimplifyCFG.cpp SimplifyCFG: Don't duplicate calls to functions marked noduplicate v2 2013-10-21 20:07:30 +00:00
SimplifyIndVar.cpp Don't use a potentially expensive shift if all we want is one set bit. 2013-07-11 16:05:50 +00:00
SimplifyInstructions.cpp
SimplifyLibCalls.cpp Use StringRef::npos for StringRef instead of std::string one 2013-09-10 00:41:53 +00:00
SpecialCaseList.cpp Introduce SpecialCaseList::isIn overload for GlobalAliases. 2013-08-19 19:00:35 +00:00
SSAUpdater.cpp Basic blocks typically have few predecessors. Use a SmallDenseMap to 2013-10-14 16:05:55 +00:00
UnifyFunctionExitNodes.cpp
Utils.cpp
ValueMapper.cpp