- Oct 16, 2009
-
-
Duncan Sands authored
llvm-svn: 84256
-
- Oct 15, 2009
-
-
Victor Hernandez authored
Fix bug where array malloc with unexpected computation of the size argument resulted in MallocHelper identifying the malloc as a non-array malloc. This broke GlobalOpt's optimization of stores of mallocs to global variables. The fix is to classify malloc's into 3 categories: 1. non-array mallocs 2. array mallocs whose array size can be determined 3. mallocs that cannot be determined to be of type 1 or 2 and cannot be optimized getMallocArraySize() returns NULL for category 3, and all users of this function must avoid their malloc optimization if this function returns NULL. Eventually, currently unexpected codegen for computing the malloc's size argument will be supported in isArrayMalloc() and getMallocArraySize(), extending malloc optimizations to those examples. llvm-svn: 84199
-
Chris Lattner authored
don't bother every time going around the main worklist. This speeds up a release-asserts opt -std-compile-opts on 403.gcc by about 4% (1.5s). It seems to speed up the most expensive instances of instcombine by ~10%. llvm-svn: 84171
-
Chris Lattner authored
instruction (which disqualifies stores, unreachable, etc) and at least the first operand is a constant. This filters out a lot of obvious cases that can't be folded. Also, switch the IRBuilder to a TargetFolder, which tries harder. llvm-svn: 84170
-
- Oct 14, 2009
-
-
Devang Patel authored
llvm-svn: 84118
-
Chris Lattner authored
presence of PHI nodes. llvm-svn: 84103
-
Devang Patel authored
llvm-svn: 84049
-
- Oct 13, 2009
-
-
Devang Patel authored
Do not check use_empty() before replaceAllUsesWith(). This gives ValueHandles a chance to get properly updated. llvm-svn: 84033
-
Dan Gohman authored
manually counting instructions. llvm-svn: 84016
-
Ted Kremenek authored
llvm-svn: 84001
-
Dan Gohman authored
llvm-svn: 83999
-
Dan Gohman authored
llvm-svn: 83998
-
Dan Gohman authored
for purposes other than inlining. llvm-svn: 83997
-
Chris Lattner authored
this will increase the likelihood of common code getting sunk towards the unwind. llvm-svn: 83996
-
Dan Gohman authored
BasicBlocks, so that it doesn't blindly procede in the presence of large individual BasicBlocks. This addresses a class of code-size expansion problems. llvm-svn: 83992
-
Evan Cheng authored
llvm-svn: 83908
-
- Oct 12, 2009
-
-
Dale Johannesen authored
llvm-svn: 83870
-
Chris Lattner authored
it to visit instructions from the start of the function to the end of the function in the first path. This greatly speeds up some pathological cases (e.g. PR5150). Try #3, this time with some unneeded debug info stuff removed which was causing dead pointers to be added to the worklist. llvm-svn: 83818
-
Chris Lattner authored
llvm-svn: 83817
-
Chris Lattner authored
it to visit instructions from the start of the function to the end of the function in the first path. This greatly speeds up some pathological cases (e.g. PR5150). llvm-svn: 83814
-
Chris Lattner authored
into a shuffle even if it was used by another insertelement. If the visitation order of instcombine was wrong, this would turn a chain of insertelements into a chain of shufflevectors, which was quite painful. Since CollectShuffleElements handles these cases, the code can just be nuked. llvm-svn: 83810
-
Chris Lattner authored
new testcase. llvm-svn: 83799
-
Chris Lattner authored
llvm-svn: 83797
-
- Oct 11, 2009
-
-
Chris Lattner authored
llvm-svn: 83795
-
Chris Lattner authored
input the the mul is a zext from bool, just that it is all zeros other than the low bit. This fixes some phase ordering issues that would cause us to miss some xforms in mul.ll when the worklist is visited differently. llvm-svn: 83794
-
Chris Lattner authored
llvm-svn: 83792
-
Chris Lattner authored
llvm-svn: 83791
-
Chris Lattner authored
it to visit instructions from the start of the function to the end of the function in the first path. This greatly speeds up some pathological cases (e.g. PR5150). llvm-svn: 83790
-
Torok Edwin authored
here. llvm-svn: 83789
-
Torok Edwin authored
For now the metadata of sinked/hoisted instructions is still wrong, but that'll be fixed when instructions will have debug metadata directly attached. llvm-svn: 83786
-
Chris Lattner authored
now-probably-dead instruction tree feeding it. llvm-svn: 83778
-
rdar://7293527Chris Lattner authored
gets but clang doesn't, because it is implemented in GCC's fold routine. llvm-svn: 83761
-
Chris Lattner authored
done by condprop, but do it in a much more general form. The basic idea is that we can do a limited form of tail duplication in the case when we have a branch on a phi. Moving the branch up in to the predecessor block makes instruction selection much easier and encourages chained jump threadings. llvm-svn: 83759
-
Chris Lattner authored
llvm-svn: 83756
-
Chris Lattner authored
llvm-svn: 83755
-
Chris Lattner authored
llvm-svn: 83754
-
Chris Lattner authored
the IR, and to implement the FIXME'd optimization. llvm-svn: 83748
-
Chris Lattner authored
inserted only once, just use vector. Don't compute ExitBlocks unless we need it, change std::sort to array_pod_sort. llvm-svn: 83747
-
Chris Lattner authored
from GVN, this also speeds it up, inserts fewer PHI nodes (see the testcase) and allows it to remove more loads (due to fewer PHI nodes standing in the way). llvm-svn: 83746
-
Chris Lattner authored
llvm-svn: 83745
-