llvm/lib/Analysis
Bob Wilson 58446916b7 Revert "Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>"
This reverts r171041. This was a nice idea that didn't work out well.
Clang warnings need to be associated with warning groups so that they can
be selectively disabled, promoted to errors, etc. This simplistic patch didn't
allow for that. Enhancing it to provide some way for the backend to specify
a front-end warning type seems like overkill for the few uses of this, at
least for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174748 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08 21:48:29 +00:00
..
IPA Begin fleshing out an interface in TTI for modelling the costs of 2013-01-22 11:26:02 +00:00
AliasAnalysis.cpp Move isKnownNonNull out of AliasAnalysis.h and into ValueTracking.cpp since 2013-01-31 02:40:59 +00:00
AliasAnalysisCounter.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
AliasAnalysisEvaluator.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AliasDebugger.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AliasSetTracker.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
Analysis.cpp Move the initialization to the Analysis library as well as the pass. 2013-01-07 03:33:08 +00:00
BasicAliasAnalysis.cpp Actually update the CMake and Makefile builds correctly, and update the 2013-01-02 12:09:16 +00:00
BlockFrequencyInfo.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
BranchProbabilityInfo.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
CaptureTracking.cpp Give CaptureTracker::shouldExplore a base implementation. Most users want to do 2012-10-08 22:12:48 +00:00
CFGPrinter.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
CMakeLists.txt Sink InlineCost.cpp into IPA -- it is now officially an interprocedural 2013-01-21 12:09:41 +00:00
CodeMetrics.cpp Begin fleshing out an interface in TTI for modelling the costs of 2013-01-22 11:26:02 +00:00
ConstantFolding.cpp Conditionalize constant folding of math intrinsics on the availability of an implementation on the host. This is a little bit unfortunate, but until someone decides to implement a full libm for APFloat, we don't have a better way to get this functionality. 2013-02-07 00:21:34 +00:00
CostModel.cpp ARM cost model: Address computation in vector mem ops not free 2013-02-08 14:50:48 +00:00
DbgInfoPrinter.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
DependenceAnalysis.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
DominanceFrontier.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
DomPrinter.cpp remove the blank line from previous ci. 2012-02-04 03:18:47 +00:00
InstCount.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
InstructionSimplify.cpp Identify and simplify idempotent intrinsics. Test case included. 2013-02-07 19:26:05 +00:00
Interval.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
IntervalPartition.cpp
IVUsers.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
LazyValueInfo.cpp Move isKnownNonNull out of AliasAnalysis.h and into ValueTracking.cpp since 2013-01-31 02:40:59 +00:00
LibCallAliasAnalysis.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
LibCallSemantics.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
Lint.cpp Change GetPointerBaseWithConstantOffset's DataLayout argument from a 2013-01-31 02:00:45 +00:00
LLVMBuild.txt
Loads.cpp Change GetPointerBaseWithConstantOffset's DataLayout argument from a 2013-01-31 02:00:45 +00:00
LoopInfo.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
LoopPass.cpp Enable the new LoopInfo algorithm by default. 2012-06-26 04:11:38 +00:00
Makefile
MemDepPrinter.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
MemoryBuiltins.cpp Reverting r171325 & r172363. This was causing a mis-compile on the self-hosted LTO build bots. 2013-01-17 21:28:46 +00:00
MemoryDependenceAnalysis.cpp Change GetPointerBaseWithConstantOffset's DataLayout argument from a 2013-01-31 02:00:45 +00:00
ModuleDebugInfoPrinter.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
NoAliasAnalysis.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PathNumbering.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PathProfileInfo.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PathProfileVerifier.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PHITransAddr.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PostDominators.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ProfileDataLoader.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ProfileDataLoaderPass.cpp Revert "Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>" 2013-02-08 21:48:29 +00:00
ProfileEstimatorPass.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ProfileInfo.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ProfileInfoLoader.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ProfileInfoLoaderPass.cpp Revert "Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>" 2013-02-08 21:48:29 +00:00
ProfileVerifierPass.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PtrUseVisitor.cpp Hoist the GEP constant address offset computation to a common home on 2012-12-11 10:29:10 +00:00
README.txt
RegionInfo.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
RegionPass.cpp Remove the the block_node_iterator of Region, replace it by the block_iterator. 2012-08-27 13:49:24 +00:00
RegionPrinter.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ScalarEvolution.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ScalarEvolutionAliasAnalysis.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ScalarEvolutionExpander.cpp SCEVExpander fix. RAUW needs to update the InsertedExpressions cache. 2013-01-14 21:00:37 +00:00
ScalarEvolutionNormalization.cpp
SparsePropagation.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
TargetTransformInfo.cpp ARM cost model: Address computation in vector mem ops not free 2013-02-08 14:50:48 +00:00
Trace.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
TypeBasedAliasAnalysis.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ValueTracking.cpp Move isKnownNonNull out of AliasAnalysis.h and into ValueTracking.cpp since 2013-01-31 02:40:59 +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.

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

In formatValue in test/CodeGen/X86/lsr-delayed-fold.ll,

ScalarEvolution is forming this expression:

((trunc i64 (-1 * %arg5) to i32) + (trunc i64 %arg5 to i32) + (-1 * (trunc i64 undef to i32)))

This could be folded to

(-1 * (trunc i64 undef to i32))

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