summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/ScalarEvolution.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix SingleSource/Benchmarks/McGill/chompChris Lattner2004-10-111-0/+1
| | | | llvm-svn: 16912
* Fixes to make LLVM compile with vc7.1.Alkis Evlogimenos2004-09-031-0/+1
| | | | | | Patch contributed by Paolo Invernizzi! llvm-svn: 16152
* Changes For Bug 352Reid Spencer2004-09-011-2/+2
| | | | | | | | Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
* bug 122:Reid Spencer2004-07-181-6/+4
| | | | | | | | - Replace ConstantPointerRef usage with GlobalValue usage - Minimize redundant isa<GlobalValue> usage - Correct isa<Constant> for GlobalValue subclass llvm-svn: 14942
* Remove distasteful method which is really part of the indvars passChris Lattner2004-06-241-13/+0
| | | | llvm-svn: 14359
* REALLY fix PR378: crash in scalar evolution analysisChris Lattner2004-06-201-0/+1
| | | | llvm-svn: 14275
* Fix a bug in my change last night that caused a few test failures.Chris Lattner2004-06-201-1/+1
| | | | llvm-svn: 14270
* Do not sort SCEV objects by address: instead sort by complexity and groupChris Lattner2004-06-201-18/+60
| | | | | | | by address. This prevents the resultant SCEV objects from depending on where in memory other scev objects happen to live. llvm-svn: 14263
* Changes to fix up the inst_iterator to pass to boost iterator checks. ThisChris Lattner2004-04-271-6/+6
| | | | | | patch was graciously contributed by Vladimir Prus. llvm-svn: 13185
* Eliminate all of the SCEV Expansion code which is really part of theChris Lattner2004-04-231-213/+9
| | | | | | IndVars pass, not part of SCEV *analysis*. llvm-svn: 13134
* It's not just a printer, it's actually an analysis tooChris Lattner2004-04-191-1/+1
| | | | llvm-svn: 13064
* Change the ExitBlocks list from being explicitly contained in the LoopChris Lattner2004-04-181-3/+8
| | | | | | | structure to being dynamically computed on demand. This makes updating loop information MUCH easier. llvm-svn: 13045
* Add the ability to compute exit values for complex loop using unanalyzableChris Lattner2004-04-171-52/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | operations. This allows us to compile this testcase: int main() { int h = 1; do h = 3 * h + 1; while (h <= 256); printf("%d\n", h); return 0; } into this: int %main() { entry: call void %__main( ) %tmp.6 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([4 x sbyte]* %.str_1, long 0, long 0), int 364 ) ; <int> [#uses=0] ret int 0 } This testcase was taken directly from 256.bzip2, believe it or not. This code is not as general as I would like. Next up is to refactor it a bit to handle more cases. llvm-svn: 13019
* Add the ability to compute trip counts that are only controlled by constantsChris Lattner2004-04-171-5/+174
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | even if the loop is using expressions that we can't compute as a closed-form. This allows us to calculate that this function always returns 55: int test() { double X; int Count = 0; for (X = 100; X > 1; X = sqrt(X), ++Count) /*empty*/; return Count; } And allows us to compute trip counts for loops like: int h = 1; do h = 3 * h + 1; while (h <= 256); (which occurs in bzip2), and for this function, which occurs after inlining and other optimizations: int popcount() { int x = 666; int result = 0; while (x != 0) { result = result + (x & 0x1); x = x >> 1; } return result; } We still cannot compute the exit values of result or h in the two loops above, which means we cannot delete the loop, but we are getting closer. Being able to compute a constant trip count for these two loops will allow us to unroll them completely though. llvm-svn: 13017
* Include <cmath> for compatibility with gcc 3.0.x (the system compiler onBrian Gaeke2004-04-161-0/+1
| | | | | | Debian.) llvm-svn: 12986
* Factor a bunch of classes out into a public headerChris Lattner2004-04-151-553/+142
| | | | llvm-svn: 12958
* Unbreak the buildChris Lattner2004-04-151-0/+1
| | | | llvm-svn: 12956
* Implement a FIXME: if we're going to insert a cast, we might as well onlyChris Lattner2004-04-141-1/+15
| | | | | | insert it once! llvm-svn: 12955
* This is a trivial tweak to the addrec insertion code: insert the incrementChris Lattner2004-04-141-7/+12
| | | | | | | | | | | at the bottom of the loop instead of the top. This reduces the number of overlapping live ranges a lot, for example, eliminating a spill in an important loop in 183.equake with linear scan. I still need to make the exit comparison of the loop use the post-incremented version of this variable, but this is an easy first step. llvm-svn: 12952
* Fix a bug Brian found.Chris Lattner2004-04-071-2/+3
| | | | llvm-svn: 12754
* Sparc don't got not "sqrtl", bum bum bumChris Lattner2004-04-051-1/+1
| | | | llvm-svn: 12670
* Kill warnings during an optimized compile where assert() disappears.Misha Brukman2004-04-051-0/+2
| | | | llvm-svn: 12669
* Fix PR312 and IndVarsSimplify/2004-04-05-InvokeCastCrash.llxChris Lattner2004-04-051-0/+2
| | | | llvm-svn: 12668
* Add a break in the default caseChris Lattner2004-04-031-0/+1
| | | | llvm-svn: 12639
* Comment out debugging printoutsChris Lattner2004-04-021-1/+5
| | | | llvm-svn: 12623
* Add a new analysisChris Lattner2004-04-021-0/+2482
llvm-svn: 12619
OpenPOWER on IntegriCloud