llvm-6502/include/llvm
Dan Gohman c2390b14c9 Teach IndVarSimplify to optimize code using the C "int" type for
loop induction on LP64 targets. When the induction variable is
used in addressing, IndVars now is usually able to inserst a
64-bit induction variable and eliminates the sign-extending cast.
This is also useful for code using C "short" types for
induction variables on targets with 32-bit addressing.

Inserting a wider induction variable is easy; the tricky part is
determining when trunc(sext(i)) expressions are no-ops. This
requires range analysis of the loop trip count. A common case is
when the original loop iteration starts at 0 and exits when the
induction variable is signed-less-than a fixed value; this case
is now handled.

This replaces IndVarSimplify's OptimizeCanonicalIVType. It was
doing the same optimization, but it was limited to loops with
constant trip counts, because it was running after the loop
rewrite, and the information about the original induction
variable is lost by that point.

Rename ScalarEvolution's executesAtLeastOnce to
isLoopGuardedByCond, generalize it to be able to test for
ICMP_NE conditions, and move it to be a public function so that
IndVars can use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64407 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-12 22:19:27 +00:00
..
ADT Add operator->, patch by Ben Laurie! 2009-02-12 17:14:49 +00:00
Analysis Teach IndVarSimplify to optimize code using the C "int" type for 2009-02-12 22:19:27 +00:00
Assembly remove a dead method. 2009-01-16 20:26:53 +00:00
Bitcode Add suppport for ConstantExprs of shufflevectors whose result type is not equal to the 2009-02-12 21:28:33 +00:00
CodeGen When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
CompilerDriver Add three new option properties. 2009-01-28 03:47:20 +00:00
Config Regenerate. 2009-02-04 06:27:44 +00:00
Debugger Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
ExecutionEngine Add support for deleting a module provider from a JIT in such a way that it does not cause the owned module to be fully materialized. 2009-01-23 19:27:28 +00:00
Support Deallocate() methods now take a 'const void*' instead of a 'void *', matching observed behavior with how 'delete[]' can be used. 2009-02-06 19:34:14 +00:00
System 80-column violation. 2009-02-08 22:48:07 +00:00
Target Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nasty 2009-02-09 07:14:22 +00:00
Transforms Enable scalar replacement of AllocaInst whose one of the user is dbg info. 2009-02-10 07:00:59 +00:00
AbstractTypeUser.h implement simplify_type for PATypeHolder so that isa<FooType>(PATypeHolder) 2008-12-27 07:47:40 +00:00
Argument.h Don't analyze arguments already marked 'nocapture'. 2008-12-31 18:08:59 +00:00
Attributes.h Add a new Attribute::getAlignmentFromAttrs method. 2008-12-31 08:41:38 +00:00
AutoUpgrade.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
BasicBlock.h fix grammar, thanks Duncan! 2008-12-11 11:44:49 +00:00
CallGraphSCCPass.h Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
CallingConv.h Add "inreg" field to CallSDNode (doesn't increase 2008-09-26 19:31:26 +00:00
CMakeLists.txt CMake: Adds header and TableGen files to Visual Studio solution. A new 2008-11-15 02:08:08 +00:00
Constant.h fix typo's 2008-10-13 10:28:12 +00:00
Constants.h Reword the comment for ConstantInt's getLimitedValue. 2008-12-20 17:06:39 +00:00
DerivedTypes.h Assert that VectorType::getTruncatedElementVectorType is not used with 2009-01-07 23:44:27 +00:00
Function.h Reapply 63765. Patches for clang and llvm-gcc to follow. 2009-02-05 01:49:45 +00:00
GlobalAlias.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
GlobalValue.h Add the private linkage. 2009-01-15 20:18:42 +00:00
GlobalVariable.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
InlineAsm.h Keep track of *which* input constraint matches an output 2008-10-17 16:47:46 +00:00
InstrTypes.h 80-column violations. 2009-02-09 17:11:05 +00:00
Instruction.def Cosmetic. 2008-10-06 20:33:02 +00:00
Instruction.h add a new insertAfter method, patch by Tom Jablin! 2009-01-13 07:43:51 +00:00
Instructions.h incorporate review feedback 2009-02-09 20:27:45 +00:00
IntrinsicInst.h reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an 2008-11-21 16:42:48 +00:00
Intrinsics.h Reapply 63765. Patches for clang and llvm-gcc to follow. 2009-02-05 01:49:45 +00:00
Intrinsics.td Reapply 63765. Patches for clang and llvm-gcc to follow. 2009-02-05 01:49:45 +00:00
IntrinsicsAlpha.td Modify the intrinsics pattern to separate out the "return" types from the 2008-11-13 09:08:33 +00:00
IntrinsicsARM.td Modify the intrinsics pattern to separate out the "return" types from the 2008-11-13 09:08:33 +00:00
IntrinsicsCellSPU.td Modify the intrinsics pattern to separate out the "return" types from the 2008-11-13 09:08:33 +00:00
IntrinsicsPowerPC.td Modify the intrinsics pattern to separate out the "return" types from the 2008-11-13 09:08:33 +00:00
IntrinsicsX86.td Modify the intrinsics pattern to separate out the "return" types from the 2008-11-13 09:08:33 +00:00
IntrinsicsXCore.td Add XCore intrinsics for getid (returns thread id) and bitrev (reverses 2008-11-14 10:12:16 +00:00
LinkAllPasses.h Fix PR3415 (infinite loop in EscapeAnalysis) by 2009-01-28 11:33:59 +00:00
LinkAllVMCore.h opt was not exporting the Mangler symbols 2008-11-05 22:42:50 +00:00
Linker.h * Alphabetized system headers per the style guide 2009-01-02 20:26:30 +00:00
Module.h Reapply 63765. Patches for clang and llvm-gcc to follow. 2009-02-05 01:49:45 +00:00
ModuleProvider.h
OperandTraits.h Fill in a glaring omission in derived User classes, namely 2009-02-11 22:09:00 +00:00
Pass.h Rename getAnalysisToUpdate to getAnalysisIfAvailable. 2009-01-28 13:14:17 +00:00
PassAnalysisSupport.h Rename getAnalysisToUpdate to getAnalysisIfAvailable. 2009-01-28 13:14:17 +00:00
PassManager.h
PassManagers.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
PassSupport.h
SymbolTableListTraits.h
Type.h add a new form of Type::dump that takes a module for type names, 2008-10-01 20:16:19 +00:00
TypeSymbolTable.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
Use.h eliminate tabs from my previous commit 2009-01-05 16:28:14 +00:00
User.h add accessors 2009-01-31 07:34:19 +00:00
Value.h Comment typeo fix, thanks Duncan! 2008-12-02 18:33:11 +00:00
ValueSymbolTable.h