aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2008-02-20Add explicit keywords.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47382 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20Fix newly-introduced 4.3 warningsAnton Korobeynikov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47375 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20Get rid of hash_map. Use StringMap insteadAnton Korobeynikov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47373 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20Make Transforms to be 4.3 warnings-cleanAnton Korobeynikov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47371 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20Unbreak build with gcc 4.3: provide missed includes and silence most ↵Anton Korobeynikov
annoying warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47367 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20When performing return slot optimization, remember to inform memdep when ↵Owen Anderson
we're removing the memcpy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47364 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Expand ParameterAttributes to 32 bits (in preparationDale Johannesen
for adding alignment info, not there yet). Clean up interfaces to reference ParameterAttributes consistently. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47342 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19remove the LowerSelect pass. The last client was the old Sparc backend, ↵Chris Lattner
which is long dead by now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47323 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19remove the lower packed pass. It can never work and even the parts that Chris Lattner
could work don't work fully. This fixes PR1705. Oh yeah, we don't have packed types anymore either ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47322 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Refactor this method a bit, and correct a test that was completely wrong but ↵Owen Anderson
happened to work out anyways. :-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47321 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19isa+cast -> dyncast.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47320 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19simplify this code again, try 2 :)Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47319 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Fix a comment.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47318 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Major improvements to yesterday's return slot optimization. Remove some ↵Owen Anderson
unneccessary constraints, and add some others that should have been in from the first place. Document the whole thing better. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47315 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19fdiv/frem of undef can produce undef, because the undef operand Chris Lattner
can be a SNaN. We could be more aggressive and turn this into unreachable, but that is less nice, and not really worth it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47313 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Factor the profitability check for return slot optimization out into a ↵Owen Anderson
static function. At some point in the future, this check will become smarter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47310 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19An sret parameter is required to be the first parameter, so there's no need ↵Owen Anderson
to loop over all the parameters of the callee looking for it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47309 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Cleanup some of my patches from yesterday. Refactor the check for which xformOwen Anderson
to apply to a memcpy into processInstruction. Also, fix a bug in the check due to missing braces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47307 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Fix Transforms/GVN/memcpy.ll, which Chris broke in r47275 by reordering the ↵Owen Anderson
branches. memcpy's are a kind of CallInst. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47305 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18Correctly fold divide-by-constant, even when faced with overflow.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47287 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18Transforming -A + -B --> -(A + B) isn't safe for FP, thanksChris Lattner
to Dale for noticing this! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47276 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18minor code simplification, no functionality change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47275 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18Simplify caller updating using a CallSite, asDuncan Sands
requested by Chris. While there, do the same for an existing function committed by someone called "lattner" :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47273 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18Add support to GVN for performing sret return slot optimization. This means ↵Owen Anderson
that, if an sret function tail calls another sret function, it should pass its own sret parameter to the tail callee, allowing it to fill in the correct return value. llvm-gcc does not emit this by default. Instead, it allocates space in the caller for the sret of the tail call and then uses memcpy to copy the result into the caller's sret parameter. This optimization detects and optimizes that case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47265 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18switch simplifycfg from using vectors for most things to smallvectors,Chris Lattner
this speeds it up 2.3% on eon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47261 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18optimize away stackrestore calls that have no intervening alloca or call.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47258 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18simplify some code, BreakUpSubtract always returns nonnull now.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47251 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-17Fold (-x + -y) -> -(x+y) which promotes better association, fixingChris Lattner
the second half of PR2047 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47244 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-17fix pastoChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47242 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-17Split up subtracts into add+negate if they have a reassociable use or operandChris Lattner
that is also a subtract. This implements PR2047 and Transforms/Reassociate/subtest2.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47241 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-17make the logic for breaking up subtracts more explicit, no Chris Lattner
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47239 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-16Remove any 'nest' parameter attributes if the functionDuncan Sands
is not passed as an argument to a trampoline intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47220 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-15Fix PR2028Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47150 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-14If loop header is also loop exiting block then OrigPN is incoming value for ↵Devang Patel
B loop header. Fixes PR 2030. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47141 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-14Fix PR2029Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47129 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-14simplify code, no functionality change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47116 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-14Fix PR2032. Inform the alias analysis of changes to the underlying program.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47111 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13A loop latch phi node may have uses inside loop, not just in loop header.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47093 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13Rename APInt's isPositive to isNonNegative, to reflect what itDan Gohman
actually does. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47090 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13While moving exit condition, do not drop loop latch on the floor.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47089 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13Keep track of exit value operand number when operands are swapped.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47082 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13remove some dead code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47066 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-12Re-apply the patch to improve the optimizations of memcpy's, with severalOwen Anderson
bugs fixed. This now passes PPC bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47026 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-12Fix for bug 1996: optimize out loads of undef. This code basically just Eli Friedman
checks for a malloc/alloca immediately followed by a load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47006 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-10Fix scalarrepl to not 'miscompile' undefined code, part #2.Chris Lattner
This fixes the store case, my previous patch just fixed the load case. rdar://5707076. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46932 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-08Fix PR 1995.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46898 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06Temporarily reverting:Bill Wendling
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080128/057882.html This is causing a miscompilation on PPC G5 and just now seeing it on iMac x86-64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46822 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-05Make RenamePass faster by making the 'is this a new phi node'Chris Lattner
check more intelligent. This speeds up mem2reg from 5.29s to 0.79s on a synthetic testcase with tons of predecessors and phi nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46767 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-05Fix a bug compiling PR1978 (perhaps not the only one though) whichChris Lattner
was incorrectly simplifying "x == (gep x, 1, i)" into false, even though i could be negative. As it turns out, all the code to handle this already existed, we just need to disable the incorrect optimization case and let the general case handle it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46739 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-04Be more precise when eliminating pointers bue to memcpy's. This allows moreOwen Anderson
stores to be deleted in some cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46694 91177308-0d34-0410-b5e6-96231b3b80d8