llvm/lib/Analysis
Victor Hernandez 3a32865d58 Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.
It also strips old llvm.dbg.declare intrinsics that did not pass metadata as the first argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93531 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-15 19:04:09 +00:00
..
IPA Change dbgs() back to errs() for assert messages as Chris requested. 2009-12-23 23:14:41 +00:00
AliasAnalysis.cpp Partially address a README by having functionattrs consider calls to 2010-01-06 08:45:52 +00:00
AliasAnalysisCounter.cpp Change dbgs() back to errs() as Chris requested. 2009-12-23 22:49:57 +00:00
AliasAnalysisEvaluator.cpp Change dbgs() back to errs() as Chris requested. 2009-12-23 22:49:57 +00:00
AliasDebugger.cpp
AliasSetTracker.cpp Change dbgs() back to errs() as Chris requested. 2009-12-23 22:49:57 +00:00
Analysis.cpp "In order to ease automatic bindings generation, it would be helpful if boolean values were distinguishable from integers. The attached patch introduces "typedef int LLVMBool;", and uses LLVMBool instead of int throughout the C API, wherever a boolean value is called for." 2010-01-09 22:27:07 +00:00
BasicAliasAnalysis.cpp
CaptureTracking.cpp Reuse the Threshold value to size these containers because it's 2009-12-09 18:48:53 +00:00
CFGPrinter.cpp
CMakeLists.txt
ConstantFolding.cpp fix PR5978 by peeling the loop so that we avoid shifting the 2010-01-08 19:02:23 +00:00
DbgInfoPrinter.cpp Remove dead debug info intrinsics. 2010-01-05 01:10:40 +00:00
DebugInfo.cpp Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast). 2010-01-15 19:04:09 +00:00
DomPrinter.cpp
InlineCost.cpp Pad my commit stats by reducing indentation in this now separate 2010-01-14 23:00:10 +00:00
InstCount.cpp Change dbgs() back to errs() as Chris requested. 2009-12-23 23:29:28 +00:00
InstructionSimplify.cpp
Interval.cpp
IntervalPartition.cpp
IVUsers.cpp Use WriteAsOperand instead of getName() to print loop header names, 2010-01-09 18:17:45 +00:00
LazyValueInfo.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 20:43:58 +00:00
LibCallAliasAnalysis.cpp
LibCallSemantics.cpp
LiveValues.cpp
LoopDependenceAnalysis.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 20:52:41 +00:00
LoopInfo.cpp Restore dump() methods to Loop and MachineLoop. 2010-01-05 21:08:02 +00:00
LoopPass.cpp
Makefile
MemoryBuiltins.cpp
MemoryDependenceAnalysis.cpp The phi translated pointer can be computed when returning a partially cached result 2009-12-22 04:25:02 +00:00
PHITransAddr.cpp Change dbgs() back to errs() as Chris requested. 2009-12-23 23:27:15 +00:00
PointerTracking.cpp
PostDominators.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 21:16:54 +00:00
ProfileEstimatorPass.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 21:27:29 +00:00
ProfileInfo.cpp Change dbgs() back to errs() for assert messages as Chris requested. 2009-12-23 22:59:29 +00:00
ProfileInfoLoader.cpp
ProfileInfoLoaderPass.cpp Change dbgs() back to errs() for assert messages as Chris requested. 2009-12-23 23:00:50 +00:00
ProfileVerifierPass.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 22:10:20 +00:00
README.txt
ScalarEvolution.cpp Use WriteAsOperand instead of getName() to print loop header names, 2010-01-09 18:17:45 +00:00
ScalarEvolutionAliasAnalysis.cpp
ScalarEvolutionExpander.cpp
SparsePropagation.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 22:28:01 +00:00
Trace.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 22:35:10 +00:00
ValueTracking.cpp teach ComputeNumSignBits to look through PHI nodes. 2010-01-07 23:44:37 +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.

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