aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2008-08-21Revert r54876 r54877 r54906 and r54907. Evan found that these caused a 20%Nick Lewycky
slowdown in bzip2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55113 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Silence a compiler warning.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55087 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Fixed shuffle optimizations to handle non power of 2 vectorsMon P Wang
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55035 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19don't use the result of WriteAsOperandChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54979 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Make this comment clearer. Instead of using an ambiguous ~ (not) on an icmpNick Lewycky
predicate, swap the order of the operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54907 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Consider the case where xor by -1 and xor by 128 have been combined already toNick Lewycky
produce an xor by 127. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54906 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Rename some GC classes so that their roll will hopefully be clearer.Gordon Henriksen
In particular, Collector was confusing to implementors. Several thought that this compile-time class was the place to implement their runtime GC heap. Of course, it doesn't even exist at runtime. Specifically, the renames are: Collector -> GCStrategy CollectorMetadata -> GCFunctionInfo CollectorModuleMetadata -> GCModuleInfo CollectorRegistry -> GCRegistry Function::getCollector -> getGC (setGC, hasGC, clearGC) Several accessors and nested types have also been renamed to be consistent. These changes should be obvious. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54899 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Revert 54821. It's miscompiling 252.eon and 447.dealIIEvan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54878 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17I found a better place for this optz'n.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54877 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Xor'ing both sides of icmp by sign-bit is equivalent to swapping signedness ofNick Lewycky
the predicate. Also, make this optz'n apply in more cases where it's safe to do so. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54876 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Rework the routines that convert AP[S]Int into a string. Now, instead ofChris Lattner
returning an std::string by value, it fills in a SmallString/SmallVector passed in. This significantly reduces string thrashing in some cases. More specifically, this: - Adds an operator<< and a print method for APInt that allows you to directly send them to an ostream. - Reimplements APInt::toString to be much simpler and more efficient algorithmically in addition to not thrashing strings quite as much. This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the asmprinter. This also fixes a bug I introduced into the asmwriter in a previous patch w.r.t. alias printing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54873 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-15Remove GCSE, ValueNumbering, and LoadValueNumbering. These have been ↵Owen Anderson
deprecated for almost a year; it's finally time for them to go away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54822 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-15Reapply 54786. Add overflow and number of mantissa bits checks.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54821 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-15Revert 54786. It's not checking for overflows, etc.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54813 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-15use smallvector instead of vector for a couple worklists. This speeds up ↵Chris Lattner
instcombine by ~10% on some testcases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54811 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14Temporarily revert r54792. It's causing an ICE during bootstrapping.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54804 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14Use DenseMap. Patch by Pratik Solanki.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54792 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14If IV is used in a int-to-float cast inside the loop then try to eliminate ↵Devang Patel
the cast opeation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54786 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14Use empty() instead of begin() == end().Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54780 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14Replace two for loops with while(!X->use_empty()) loops. This preventsMatthijs Kooijman
invalidating the iterator by deleting the current use. This fixes a segfault on 64 bit linux reported in PR2675. Also remove an unneeded if. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54778 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Fix a bogus srem rule - a negative value srem'd by a power-of-2Dan Gohman
can have a non-negative result; for example, -16%16 is 0. Also, clarify the related comments. This fixes PR2670. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54767 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Fix SCCP's handling of struct value loads and stores. SCCP doesn'tDan Gohman
track individual leaf values in such cases, so it needs to treat struct values as normal values in this case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54760 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Rename. s/FindIVForUser/FindIVUserForCond/gDevang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54754 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Check sign to detect overflow before changing compare stride.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54710 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-12Remove tabs.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54707 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-11Implement support for simplifying vector comparisons by 0.0 and 1.0 like weChris Lattner
do for scalars. Patch contributed by Nicolas Capens This also generalizes the previous xforms to work on long double, now that isExactlyValue works for long double. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54653 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-08Have IRBuilder take a template argument on whether or not to preserveEric Christopher
names. This can save a lot of allocations if you aren't going to be looking at the output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54546 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-07Let SRETPromotion properly preserve the function name instead of (implicitly)Matthijs Kooijman
postfixing it with a number. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54468 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-07Fix SRETPromotion, it was generating functions without returns statements sinceMatthijs Kooijman
r53941 (but this was not noticed due to the lack of a basic test for SRETPromotion). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54467 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-07Add some debug output to SRETPromotion.Matthijs Kooijman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54464 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Fix a shufflevector instcombine that was emitting invalid masks indicesDan Gohman
when it meant to be emitting undef indices. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54417 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Fix PR2355: bug in ChangeCompareStride. When the loop termination compare is ↵Evan Cheng
the only use of its iv stride, the stride can be eliminated by moving it to another stride. If the scale is negative, swap the predicate instead of using a inverse predicate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54415 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06optimize a common idiom generated by clang for bitfield access, PR2638.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54408 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Zap sitofp/fptoui pairs. In all cases when the sign difference Chris Lattner
matters, the result is undefined anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54396 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Reinstate this optimization, but without the miscompile. Thanks to Bill forNick Lewycky
tracking down that this was breaking llvm-gcc bootstrap on Linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54394 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Pass the computed iteration count value to RewriteLoopExitValuesDan Gohman
instead of having it call getIterationCount again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54380 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Revert r53282. This was causing a miscompile on Linux. Also, the transformationBill Wendling
looks bogus. Please see PR2629 for details on why this is breaking things. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54372 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Trim #includes.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54350 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-01Fix comment typos.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54266 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-29Add vector shifts to the IR, patch by Eli Friedman.Nate Begeman
CodeGen & Clang work coming next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54161 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-29Add -unroll-allow-partial command line option that enabled the loop unroller toMatthijs Kooijman
partially unroll a loop when fully unrolling would not fit under the threshold. Patch by Mikael Lepistö. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54160 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-29Restructure ArgumentPromotion a bit. Instead of just having a single booleanMatthijs Kooijman
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54159 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-28Don't remove volatile loads. Thanks to Duncan for noticing this one.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54144 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-28Add support for eliminating stores that store the same value that was just ↵Owen Anderson
loaded. This fixes PR2599. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54133 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-27Rename SDOperand to SDValue.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-24Put the LICM of constant GlobalVariables, introduced in r53945, under aDan Gohman
command-line option, and disable it by default. It introduced performance regressions because CodeGen is currently not able to remat such loads. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53997 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-23"Allow LICM to sink or lift loads from constant memory. Also add a testChris Lattner
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! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53945 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-23Enable first-class aggregates support.Dan Gohman
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53941 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-21Fix a bug in LSR's dead-PHI cleanup. If a PHI has a def-use chain thatDan Gohman
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53879 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-18Supress a gcc-4.3 warning.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53771 91177308-0d34-0410-b5e6-96231b3b80d8