- Jul 29, 2008
-
-
Matthijs Kooijman authored
partially unroll a loop when fully unrolling would not fit under the threshold. Patch by Mikael Lepistö. llvm-svn: 54160
-
Matthijs Kooijman authored
that says "unconditional loads from this argument are safe", we now keep track of the safety per set of indices from which loads happen. This prevents ArgPromotion from promoting loads that aren't really valid. As an added effect, this will now disregard the the type of the indices passed to a GEP, so "load GEP %A, i32 1" and "load GEP %A, i64 1" will result in a single argument, not two. This fixes PR2598, for which a testcase has been added as well. llvm-svn: 54159
-
- Jul 28, 2008
-
-
Owen Anderson authored
llvm-svn: 54144
-
Owen Anderson authored
This fixes PR2599. llvm-svn: 54133
-
- Jul 27, 2008
-
-
Dan Gohman authored
llvm-svn: 54128
-
- Jul 25, 2008
-
-
Dan Gohman authored
command-line option, and disable it by default. It introduced performance regressions because CodeGen is currently not able to remat such loads. llvm-svn: 53997
-
- Jul 23, 2008
-
-
Chris Lattner authored
case for this. This allows instructions like loads from global variables declared to be constant to be moved out of loops." Patch by Stefanus Du Toit! llvm-svn: 53945
-
Dan Gohman authored
Remove the GetResultInst instruction. It is still accepted in LLVM assembly and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove support for return instructions with multiple values. These are auto-upgraded to use InsertValueInst instructions. The IRBuilder still accepts multiple-value returns, and auto-upgrades them to InsertValueInst instructions. llvm-svn: 53941
-
- Jul 21, 2008
-
-
Dan Gohman authored
leads into a cycle involving a different PHI, LSR got stuck running around that cycle looking for the original PHI. To avoid this, keep track of visited PHIs and stop searching if we see one more than once. This fixes PR2570. llvm-svn: 53879
-
- Jul 18, 2008
-
-
Duncan Sands authored
llvm-svn: 53771
-
Owen Anderson authored
Make PRE actually handle critical edges (by splitting them). Confirmed that bootstrap passes with this change. llvm-svn: 53762
-
Owen Anderson authored
llvm-svn: 53761
-
Owen Anderson authored
llvm-svn: 53760
-
Dan Gohman authored
llvm-svn: 53757
-
- Jul 17, 2008
-
-
Owen Anderson authored
llvm-svn: 53735
-
Owen Anderson authored
more than once. llvm-svn: 53731
-
Owen Anderson authored
llvm-svn: 53730
-
Matthijs Kooijman authored
llvm-svn: 53716
-
Chris Lattner authored
llvm-svn: 53715
-
Evan Cheng authored
llvm-svn: 53712
-
Owen Anderson authored
llvm-svn: 53705
-
- Jul 16, 2008
-
-
Owen Anderson authored
could cause problems for memdep when it breaks critical edges. llvm-svn: 53691
-
Matthijs Kooijman authored
FindInsertedValue, it now performs a number of simple transformations that should result in the same effect when applied iteratively. llvm-svn: 53673
-
Evan Cheng authored
llvm-svn: 53666
-
- Jul 15, 2008
-
-
Owen Anderson authored
llvm-svn: 53627
-
Owen Anderson authored
llvm-svn: 53616
-
Owen Anderson authored
Have GVN do a pre-pass over the CFG that folds away unconditional branches where possible. This allows local PRE to be more aggressive. llvm-svn: 53615
-
Matthijs Kooijman authored
again canonicalizes {i32} into i32 and {} into void. llvm-svn: 53610
-
Matthijs Kooijman authored
return value as a whole in deadargelim is really not needed now that we simply rebuild the old return value and actually prevents some canonicalization from taking place. This revert stops deadargelim from changing {i32} into i32 for now, but I'll fix that next. llvm-svn: 53609
-
Matthijs Kooijman authored
return values that are still (partially) live. Instead of updating all uses of a call instruction after removing some elements, it now just rebuilds the original struct (With undef gaps where the unused values were) and leaves it to instcombine to clean this up. The added testcase still fails currently, but this is due to instcombine which isn't good enough yet. I will fix that part next. llvm-svn: 53608
-
Matthijs Kooijman authored
llvm-svn: 53607
-
Matthijs Kooijman authored
only the liveness of partial return values (for functions returning a struct). This is more explicit to prevent unwanted changes in the return value. In particular, deadargelim now canonicalizes a function returning {i32} to returning i32 and {} to void, if the struct returned is not used in its entirety, but only the single element is used. llvm-svn: 53606
-
Matthijs Kooijman authored
and return values live for those functions. This doesn't change anything yet, but prepares for the coming commits. llvm-svn: 53601
-
Matthijs Kooijman authored
llvm-svn: 53600
-
Matthijs Kooijman authored
RetOrArg::getDescription() as const. llvm-svn: 53599
-
Matthijs Kooijman authored
llvm-svn: 53598
-
Matthijs Kooijman authored
llvm-svn: 53592
-
Matthijs Kooijman authored
method, to slightly simplify control flow. llvm-svn: 53591
-
- Jul 14, 2008
-
-
Dan Gohman authored
llvm-svn: 53564
-
Chris Lattner authored
llvm-svn: 53557
-