- Apr 05, 2004
-
-
Chris Lattner authored
types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. llvm-svn: 12653
-
- Apr 02, 2004
-
-
Chris Lattner authored
This also implements some new features for the indvars pass, including linear function test replacement, exit value substitution, and it works with a much more general class of induction variables and loops. llvm-svn: 12620
-
Chris Lattner authored
llvm-svn: 12618
-
Chris Lattner authored
This actually causes us to turn code like: return C ? A : B; into a select instruction. llvm-svn: 12617
-
- Apr 01, 2004
-
-
Chris Lattner authored
llvm-svn: 12597
-
Chris Lattner authored
llvm-svn: 12595
-
Chris Lattner authored
Testcase: LoopSimplify/2004-04-01-IncorrectDomUpdate.ll llvm-svn: 12592
-
Chris Lattner authored
llvm-svn: 12573
-
- Mar 31, 2004
-
-
Chris Lattner authored
this and the other patches 253.perlbmk links again. llvm-svn: 12565
-
- Mar 30, 2004
-
-
Brian Gaeke authored
llvm-svn: 12548
-
Chris Lattner authored
pass can eliminate many nasty cases of them, start generating them in the optimizers llvm-svn: 12545
-
Chris Lattner authored
llvm-svn: 12544
-
Chris Lattner authored
llvm-svn: 12540
-
- Mar 26, 2004
-
-
Chris Lattner authored
llvm-svn: 12520
-
- Mar 25, 2004
-
-
Chris Lattner authored
#1 is to unconditionally strip constantpointerrefs out of instruction operands where they are absolutely pointless and inhibit optimization. GRRR! #2 is to implement InstCombine/getelementptr_const.ll llvm-svn: 12519
-
- Mar 19, 2004
-
-
Chris Lattner authored
llvm-svn: 12507
-
- Mar 18, 2004
-
-
Chris Lattner authored
With this fix we now successfully extract all 149 loops from 256.bzip2 without crashing or miscompiling the program! llvm-svn: 12493
-
Chris Lattner authored
extracted all 63 loops for Olden/bh without crashing and without miscompiling the program!!! llvm-svn: 12491
-
Chris Lattner authored
exit nodes llvm-svn: 12490
-
Chris Lattner authored
llvm-svn: 12489
-
Chris Lattner authored
llvm-svn: 12487
-
Chris Lattner authored
llvm-svn: 12486
-
Chris Lattner authored
1. Names were not put on the new arguments created (ok, this just helps sanity :) 2. Fix outgoing pointer values 3. Do not insert stores for values that had not been computed 4. Fix some wierd problems with the outset calculation This fixes CodeExtractor/2004-03-14-DominanceProblem.ll, making the extractor work on at least one simple case! llvm-svn: 12484
-
Chris Lattner authored
llvm-svn: 12483
-
Chris Lattner authored
exposed the fact that the header was not self-contained. There is a reason we do things :) llvm-svn: 12481
-
- Mar 17, 2004
-
-
Chris Lattner authored
llvm-svn: 12465
-
Chris Lattner authored
llvm-svn: 12464
-
Chris Lattner authored
llvm-svn: 12458
-
Chris Lattner authored
as it is making effectively arbitrary modifications to the CFG and we don't have a domset/domfrontier implementations that can handle the dynamic updates. Instead of having a bunch of code that doesn't actually work in practice, just demote any potentially tricky values to the stack (causing the problem to go away entirely). Later invocations of mem2reg will rebuild SSA for us. This fixes all of the major performance regressions with tail duplication from LLVM 1.1. For example, this loop: --- int popcount(int x) { int result = 0; while (x != 0) { result = result + (x & 0x1); x = x >> 1; } return result; } --- Used to be compiled into: int %popcount(int %X) { entry: br label %loopentry loopentry: ; preds = %entry, %no_exit %x.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=3] %result.1.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=2] %tmp.1 = seteq int %x.0, 0 ; <bool> [#uses=1] br bool %tmp.1, label %loopexit, label %no_exit no_exit: ; preds = %loopentry %tmp.4 = and int %x.0, 1 ; <int> [#uses=1] %tmp.6 = add int %tmp.4, %result.1.0 ; <int> [#uses=1] %tmp.9 = shr int %x.0, ubyte 1 ; <int> [#uses=1] br label %loopentry loopexit: ; preds = %loopentry ret int %result.1.0 } And is now compiled into: int %popcount(int %X) { entry: br label %no_exit no_exit: ; preds = %entry, %no_exit %x.0.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=2] %result.1.0.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=1] %tmp.4 = and int %x.0.0, 1 ; <int> [#uses=1] %tmp.6 = add int %tmp.4, %result.1.0.0 ; <int> [#uses=2] %tmp.9 = shr int %x.0.0, ubyte 1 ; <int> [#uses=2] %tmp.1 = seteq int %tmp.9, 0 ; <bool> [#uses=1] br bool %tmp.1, label %loopexit, label %no_exit loopexit: ; preds = %no_exit ret int %tmp.6 } llvm-svn: 12457
-
Chris Lattner authored
llvm-svn: 12456
-
- Mar 16, 2004
-
-
Chris Lattner authored
testcase from 32.5s in -raise to take .3s llvm-svn: 12443
-
Chris Lattner authored
time from 615s to 1.49s on a large testcase that has a gigantic switch statement that all of the blocks in the function go to (an intepreter). llvm-svn: 12442
-
Chris Lattner authored
llvm-svn: 12441
-
Chris Lattner authored
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040308/013095.html Basically, this patch only updated the immediate dominatees of the header node to tell them that the preheader also dominated them. In practice, ALL dominatees of the header node are also dominated by the preheader. This fixes: LoopSimplify/2004-03-15-IncorrectDomUpdate. and PR293 llvm-svn: 12434
-
- Mar 15, 2004
-
-
Chris Lattner authored
horrible hack. llvm-svn: 12423
-
Chris Lattner authored
llvm-svn: 12420
-
Chris Lattner authored
sin/cos/strlen calls and stuff. This implements: LICM/call_sink_pure_function.ll LICM/call_sink_const_function.ll llvm-svn: 12415
-
Chris Lattner authored
llvm-svn: 12406
-
Chris Lattner authored
Simplify the input/output finder. All elements of a basic block are instructions. Any used arguments are also inputs. An instruction can only be used by another instruction. llvm-svn: 12405
-
Chris Lattner authored
extracted, and a function that contained a single top-level loop never had the loop extracted, regardless of how much non-loop code there was. llvm-svn: 12403
-