- Jun 18, 2008
-
-
Devang Patel authored
llvm-svn: 52438
-
Owen Anderson authored
We don't want to find dependencies within the same block in this case. It leads to incorrect results because we're detecting something at or after the call we're querying on. llvm-svn: 52433
-
- Jun 17, 2008
-
-
Chris Lattner authored
llvm-svn: 52415
-
Duncan Sands authored
Spotted by Nick Lewycky. llvm-svn: 52411
-
Matthijs Kooijman authored
speaking these are not constant values. However, when a function always returns one of its arguments, then from the point of view of each caller the return value is constant (or at least a known value) and can be replaced. llvm-svn: 52397
-
Matthijs Kooijman authored
individually. Also learn IPConstProp how returning first class aggregates work, in addition to old style multiple return instructions. Modify the return-constants testscase to confirm this behaviour. llvm-svn: 52396
-
Dan Gohman authored
when changing the stride of a comparison so that it's slightly more precise, by having it scan the instruction list to determine if there is a use of the condition after the point where the condition will be inserted. llvm-svn: 52371
-
- Jun 16, 2008
-
-
Evan Cheng authored
llvm-svn: 52361
-
Evan Cheng authored
llvm-svn: 52339
-
Matthijs Kooijman authored
llvm-svn: 52318
-
Matthijs Kooijman authored
llvm-svn: 52316
-
Matthijs Kooijman authored
I'm at it, rename it to FindInsertedValue. The only functional change is that newly created instructions are no longer added to instcombine's worklist, but that is not really necessary anyway (and I'll commit some improvements next that will completely remove the need). llvm-svn: 52315
-
Chris Lattner authored
llvm-svn: 52295
-
- Jun 14, 2008
-
-
Chris Lattner authored
llvm-svn: 52267
-
Eli Friedman authored
when trying to sink stores. llvm-svn: 52259
-
- Jun 13, 2008
-
-
Dan Gohman authored
for it to generate use-before-def IR, such as in this testcase. llvm-svn: 52258
-
Eli Friedman authored
structure checks are incorrect if the blocks aren't distinct. Fixes PR2435. llvm-svn: 52257
-
Wojciech Matyjewicz authored
llvm-svn: 52251
-
- Jun 12, 2008
-
-
Gabor Greif authored
llvm-svn: 52247
-
Gabor Greif authored
llvm-svn: 52246
-
Evan Cheng authored
Do not speculatively execute an instruction by hoisting it to its predecessor BB if any of its operands are defined but not used in BB. The transformation will prevent the operand from being sunk into the use block. llvm-svn: 52244
-
Evan Cheng authored
llvm-svn: 52243
-
Owen Anderson authored
llvm-svn: 52242
-
- Jun 11, 2008
-
-
Gabor Greif authored
llvm-svn: 52226
-
Evan Cheng authored
For now, avoid generating FP select instructions in order to speculatively execute integer arithmetic instructions. FP selects are more likely to be expensive (even compared to branch on fcmp). This is not a wonderful solution but I rather err on the side of conservative. This fixes the heapsort performance regressions. llvm-svn: 52224
-
Evan Cheng authored
Avoid duplicating loop header which leads to unnatural loops (and just seem like general badness to me, likely to cause code explosion). Patch by Florian Brandner. llvm-svn: 52223
-
Matthijs Kooijman authored
useless insert-extract chains, similar to how it folds them for vectors. Add a testcase for this. llvm-svn: 52217
-
Matthijs Kooijman authored
llvm-svn: 52212
-
Gabor Greif authored
llvm-svn: 52191
-
- Jun 09, 2008
-
-
Chris Lattner authored
llvm-svn: 52138
-
Chris Lattner authored
result of a weak function. llvm-svn: 52137
-
- Jun 08, 2008
-
-
Duncan Sands authored
of apint codegen failure is the DAG combiner doing the wrong thing because it was comparing MVT's using < rather than comparing the number of bits. Removing the < method makes this mistake impossible to commit. Instead, add helper methods for comparing bits and use them. llvm-svn: 52098
-
Chris Lattner authored
don't make i1 phis when it won't be possible to eliminate them. llvm-svn: 52097
-
- Jun 07, 2008
-
-
Evan Cheng authored
Speculatively execute a block when the the block is the then part of a triangle shape and it contains a single, side effect free, cheap instruction. The branch is eliminated by adding a select instruction. i.e. Turn BB: %t1 = icmp br i1 %t1, label %BB1, label %BB2 BB1: %t3 = add %t2, c br label BB2 BB2: => BB: %t1 = icmp %t4 = add %t2, c %t3 = select i1 %t1, %t2, %t3 llvm-svn: 52073
-
- Jun 06, 2008
-
-
Devang Patel authored
llvm-svn: 52053
-
Duncan Sands authored
and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
-
Zhou Sheng authored
otherwise, opt might crash. llvm-svn: 52041
-
- Jun 05, 2008
-
-
Zhou Sheng authored
crash the opt. Just fix this. Test case in llvm/test/Transforms/InstCombine/2008-06-05-ashr-crash.ll llvm-svn: 52003
-
Matthijs Kooijman authored
work and how to replace them into individual values. Also, when trying to replace an aggregrate that is used by load or store with a single (large) integer, don't crash (but don't replace the aggregrate either). Also adds a testcase for both structs and arrays. llvm-svn: 51997
-
Matthijs Kooijman authored
not other instructions. This fixes a crash with the added testcase. llvm-svn: 51992
-