hanchenye-llvm-project/llvm/lib/Analysis
Bill Wendling c9b22d735a Create enums for the different attributes.
We use the enums to query whether an Attributes object has that attribute. The
opaque layer is responsible for knowing where that specific attribute is stored.

llvm-svn: 165488
2012-10-09 07:45:08 +00:00
..
IPA Now that invoke of an intrinsic is possible (for the llvm.do.nothing intrinsic) 2012-09-26 17:16:01 +00:00
AliasAnalysis.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
AliasAnalysisCounter.cpp Persuade GCC that there is nothing worth warning about here (there isn't). 2012-02-05 14:20:11 +00:00
AliasAnalysisEvaluator.cpp Remove unnecessary default cases in switches that cover all enum values. 2012-01-10 16:47:17 +00:00
AliasDebugger.cpp
AliasSetTracker.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
Analysis.cpp Profile: set branch weight metadata with data generated from profiling. 2012-08-28 22:21:25 +00:00
BasicAliasAnalysis.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
BlockFrequencyInfo.cpp Add some constantness to BranchProbabilityInfo and BlockFrequnencyInfo. 2011-12-20 20:03:10 +00:00
BranchProbabilityInfo.cpp BranchProb: modify the definition of an edge in BranchProbabilityInfo to handle 2012-08-24 18:14:27 +00:00
CFGPrinter.cpp Remove all remaining uses of Value::getNameStr(). 2011-11-15 16:27:03 +00:00
CMakeLists.txt Profile: set branch weight metadata with data generated from profiling. 2012-08-28 22:21:25 +00:00
CaptureTracking.cpp Give CaptureTracker::shouldExplore a base implementation. Most users want to do 2012-10-08 22:12:48 +00:00
CodeMetrics.cpp Create enums for the different attributes. 2012-10-09 07:45:08 +00:00
ConstantFolding.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
DbgInfoPrinter.cpp Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and 2012-06-28 00:05:13 +00:00
DomPrinter.cpp remove the blank line from previous ci. 2012-02-04 03:18:47 +00:00
DominanceFrontier.cpp Release build: guard dump functions with 2012-09-12 05:06:18 +00:00
IVUsers.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
InlineCost.cpp Create enums for the different attributes. 2012-10-09 07:45:08 +00:00
InstCount.cpp
InstructionSimplify.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
Interval.cpp Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 2012-09-27 10:14:43 +00:00
IntervalPartition.cpp
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
LazyValueInfo.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
LibCallAliasAnalysis.cpp
LibCallSemantics.cpp
Lint.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
Loads.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
LoopDependenceAnalysis.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
LoopInfo.cpp Release build: guard dump functions with 2012-09-12 05:06:18 +00:00
LoopPass.cpp Enable the new LoopInfo algorithm by default. 2012-06-26 04:11:38 +00:00
Makefile
MemDepPrinter.cpp Mark some static arrays as const. 2012-05-24 06:35:32 +00:00
MemoryBuiltins.cpp Remove more uses of the attribute enums by supplying appropriate query methods for them. 2012-10-09 00:28:54 +00:00
MemoryDependenceAnalysis.cpp Create enums for the different attributes. 2012-10-09 07:45:08 +00:00
ModuleDebugInfoPrinter.cpp Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and 2012-06-28 00:05:13 +00:00
NoAliasAnalysis.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
PHITransAddr.cpp Release build: guard dump functions with 2012-09-12 05:06:18 +00:00
PathNumbering.cpp Move llvm/Support/TypeBuilder.h -> llvm/TypeBuilder.h. This completes 2012-07-15 23:45:24 +00:00
PathProfileInfo.cpp
PathProfileVerifier.cpp Remove all remaining uses of Value::getNameStr(). 2011-11-15 16:27:03 +00:00
PostDominators.cpp remove postdom frontiers, because it is dead. Forward dom frontiers are 2011-04-05 21:57:17 +00:00
ProfileDataLoader.cpp Clean up ProfileDataLoader a bit. 2012-08-31 12:43:07 +00:00
ProfileDataLoaderPass.cpp Cleanups due to feedback. No functionality change. Patch by Alistair. 2012-08-31 05:18:31 +00:00
ProfileEstimatorPass.cpp Fix floating-point divide by zero, in a case where the value was not going to be used anyway. 2012-08-24 00:31:45 +00:00
ProfileInfo.cpp Profile: set branch weight metadata with data generated from profiling. 2012-08-28 22:21:25 +00:00
ProfileInfoLoader.cpp Remove unused private member variables uncovered by the recent changes to clang's -Wunused-private-field. 2012-07-20 22:05:57 +00:00
ProfileInfoLoaderPass.cpp Round 2 of dead private variable removal. 2012-06-06 19:47:08 +00:00
ProfileVerifierPass.cpp Move code into anonymous namespaces. 2011-11-26 23:01:57 +00:00
README.txt
RegionInfo.cpp Release build: guard dump functions with 2012-09-12 05:06:18 +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 Rename the Region::block_iterator to Region::block_node_iterator, and 2012-05-04 20:55:23 +00:00
ScalarEvolution.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
ScalarEvolutionAliasAnalysis.cpp
ScalarEvolutionExpander.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
ScalarEvolutionNormalization.cpp More dead code removal (using -Wunreachable-code) 2012-01-20 21:51:11 +00:00
SparsePropagation.cpp Taken into account Duncan's comments for r149481 dated by 2nd Feb 2012: 2012-03-08 07:06:20 +00:00
Trace.cpp Release build: guard dump functions with 2012-09-12 05:06:18 +00:00
TypeBasedAliasAnalysis.cpp Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
ValueTracking.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00

README.txt

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))

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