llvm-6502/lib/Analysis
Chris Lattner de4845c163 Switch the code generator (except the JIT) onto the new DebugLoc
representation.  This eliminates the 'DILocation' MDNodes for 
file/line/col tuples from -O0 -g codegen.

This remove the old DebugLoc class, making it a typedef for DebugLoc,
I'll rename NewDebugLoc next.

I didn't update the JIT to use the new apis, so it will continue to
work, but be as slow as before.  Someone should eventually do this
or, better yet, rip out the JIT debug info stuff and build the JIT
on top of MC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100209 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02 19:42:39 +00:00
..
IPA Revert 100204. It broke a bunch of tests and apparently changed what passes are run during codegen. 2010-04-02 19:29:15 +00:00
AliasAnalysis.cpp
AliasAnalysisCounter.cpp
AliasAnalysisEvaluator.cpp
AliasDebugger.cpp
AliasSetTracker.cpp
Analysis.cpp
BasicAliasAnalysis.cpp
CaptureTracking.cpp rename use_const_iterator to const_use_iterator for consistency's sake 2010-03-25 23:06:16 +00:00
CFGPrinter.cpp
CMakeLists.txt
ConstantFolding.cpp FP16 constfolding 2010-03-19 00:36:35 +00:00
DbgInfoPrinter.cpp
DebugInfo.cpp Switch the code generator (except the JIT) onto the new DebugLoc 2010-04-02 19:42:39 +00:00
DomPrinter.cpp
InlineCost.cpp Reapply r99451 with a fix to move the NoInline check to the cost functions 2010-03-25 04:49:10 +00:00
InstCount.cpp
InstructionSimplify.cpp fix incorrect folding of icmp with undef, PR6481. 2010-03-03 19:46:03 +00:00
Interval.cpp
IntervalPartition.cpp
IVUsers.cpp Spelling fixes. 2010-03-01 17:49:51 +00:00
LazyValueInfo.cpp
LibCallAliasAnalysis.cpp
LibCallSemantics.cpp
LiveValues.cpp rename use_const_iterator to const_use_iterator for consistency's sake 2010-03-25 23:06:16 +00:00
LoopDependenceAnalysis.cpp Define placement new wrappers for BumpPtrAllocator and 2010-03-18 18:49:47 +00:00
LoopInfo.cpp Add a DominatorTree argument to isLCSSA so that it doesn't have to 2010-03-10 19:38:49 +00:00
LoopPass.cpp Revert 100204. It broke a bunch of tests and apparently changed what passes are run during codegen. 2010-04-02 19:29:15 +00:00
Makefile
MemoryBuiltins.cpp rename use_const_iterator to const_use_iterator for consistency's sake 2010-03-25 23:06:16 +00:00
MemoryDependenceAnalysis.cpp
PHITransAddr.cpp
PointerTracking.cpp
PostDominators.cpp
ProfileEstimatorPass.cpp rename pred_const_iterator to const_pred_iterator for consistency's sake 2010-03-25 23:25:28 +00:00
ProfileInfo.cpp rename pred_const_iterator to const_pred_iterator for consistency's sake 2010-03-25 23:25:28 +00:00
ProfileInfoLoader.cpp
ProfileInfoLoaderPass.cpp rename pred_const_iterator to const_pred_iterator for consistency's sake 2010-03-25 23:25:28 +00:00
ProfileVerifierPass.cpp rename pred_const_iterator to const_pred_iterator for consistency's sake 2010-03-25 23:25:28 +00:00
README.txt
ScalarEvolution.cpp Define placement new wrappers for BumpPtrAllocator and 2010-03-18 18:49:47 +00:00
ScalarEvolutionAliasAnalysis.cpp Add a comment. 2010-03-01 17:56:04 +00:00
ScalarEvolutionExpander.cpp Don't back past debug info intrinsics; SCEVExpander's strategy 2010-03-23 21:53:22 +00:00
SparsePropagation.cpp
Trace.cpp
ValueTracking.cpp Fix a typo in ValueTracking that's causing instcombine to delete needed shift instructions. 2010-03-13 02:20:29 +00:00

Analysis Opportunities:

//===---------------------------------------------------------------------===//

In test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll, the
ScalarEvolution expression for %r is this:

  {1,+,3,+,2}<loop>

Outside the loop, this could be evaluated simply as (%n * %n), however
ScalarEvolution currently evaluates it as

  (-2 + (2 * (trunc i65 (((zext i64 (-2 + %n) to i65) * (zext i64 (-1 + %n) to i65)) /u 2) to i64)) + (3 * %n))

In addition to being much more complicated, it involves i65 arithmetic,
which is very inefficient when expanded into code.

//===---------------------------------------------------------------------===//