summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO
Commit message (Collapse)AuthorAgeFilesLines
* reapply r101434Gabor Greif2010-04-162-17/+17
| | | | | | | | | | | | | with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101465
* back out r101423 and r101397, they break llvm-gcc self-host on darwin10Gabor Greif2010-04-162-17/+17
| | | | llvm-svn: 101434
* reapply r101364, which has been backed out in r101368Gabor Greif2010-04-152-17/+17
| | | | | | | | | | | | | with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101397
* back out r101364, as it trips the linux nightlybot on some clang C++ testsGabor Greif2010-04-152-17/+17
| | | | llvm-svn: 101368
* rotate CallInst operands, i.e. move callee to the backGabor Greif2010-04-152-17/+17
| | | | | | | | | | of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101364
* IPO needs ScalarOpts and InstCombine in its libsTobias Grosser2010-04-141-0/+2
| | | | | | | | The commit "Adding IPSCCP and Internalize passes to the C-bindings" introduced new dependencies for IPO. Add these to the CMAKE build as otherwise the BUILD_SHARED_LIBS=1 build fails. llvm-svn: 101313
* - Code clean up to reduce indentation.Evan Cheng2010-04-141-51/+54
| | | | | | - TryToOptimizeStoreOfMallocToGlobal should check if TargetData is available and bail out if it is not. The transformations being done requires TD. llvm-svn: 101285
* I don't know how, but I managed to goof the revert. Remove function that shouldNick Lewycky2010-04-141-37/+0
| | | | | | have been removed in r101231. llvm-svn: 101232
* Revert r101213.Nick Lewycky2010-04-141-29/+14
| | | | llvm-svn: 101231
* Remove tab.Nick Lewycky2010-04-141-1/+1
| | | | llvm-svn: 101223
* While DAE can't modify the function signature of an externally visible function,Nick Lewycky2010-04-141-14/+66
| | | | | | | | | it can check whether the visible direct callers are passing in parameters to dead arguments and replace those with undef. This reinstates r94322 with bugs fixed. llvm-svn: 101213
* Implement support for varargs functions without any fixedChris Lattner2010-04-101-15/+0
| | | | | | | | parameters in the CBE by implicitly adding a fixed argument. This allows eliminating a work-around from DAE. Patch by Sylvere Teissier! llvm-svn: 100944
* fix PR6760, a missing check in heap SRoA.Chris Lattner2010-04-101-1/+2
| | | | llvm-svn: 100936
* Adding IPSCCP and Internalize passes to the C-bindingsWesley Peck2010-04-091-0/+9
| | | | llvm-svn: 100893
* fix 80-col violationsGabor Greif2010-04-071-13/+17
| | | | llvm-svn: 100677
* make more two predicates constantGabor Greif2010-04-061-15/+15
| | | | llvm-svn: 100549
* performance: get rid of repeated dereferencing of use_iterator by caching ↵Gabor Greif2010-04-061-21/+28
| | | | | | its result llvm-svn: 100547
* const-ize predicate ValueIsOnlyUsedLocallyOrStoredToOneGlobalGabor Greif2010-04-061-9/+10
| | | | llvm-svn: 100546
* use CallSite to access calls vs. invokes uniformlyGabor Greif2010-04-061-5/+6
| | | | | | and remove assumptions about operand order llvm-svn: 100544
* don't internalize available_externally functions, they areChris Lattner2010-04-031-0/+4
| | | | | | really just declarations. This is related to PR6524 llvm-svn: 100269
* Revert the recent alignment changes. They're broken for -Os because,Dan Gohman2010-04-021-7/+1
| | | | | | | in particular, they end up aligning strings at 16-byte boundaries, and there's no way for GlobalOpt to check OptForSize. llvm-svn: 100172
* Make globalopt refine global variable alignment.Dan Gohman2010-04-021-1/+7
| | | | llvm-svn: 100160
* Introduce ImmutableCallSite, useful for contexts where no mutationGabor Greif2010-04-012-63/+65
| | | | | | | | | is necessary. Inherits from new templated baseclass CallSiteBase<> which is highly customizable. Base CallSite on it too, in a configuration that allows full mutation. Adapt some call sites in analyses to employ ImmutableCallSite. llvm-svn: 100100
* Clean up this file a little, no functionality change. This is a subset of myNick Lewycky2010-04-011-11/+10
| | | | | | patch back in r94322. llvm-svn: 100097
* When we promote a load of an argument make sure to take the alignmentEric Christopher2010-03-271-1/+5
| | | | | | | of the previous load - it's usually important. For example, we don't want to blindly turn an unaligned load into an aligned one. llvm-svn: 99699
* Finally land the InvokeInst operand reordering.Gabor Greif2010-03-242-2/+2
| | | | | | | | | | | | I have audited all getOperandNo calls now, fixing hidden assumptions. CallSite related uglyness will be eliminated successively. Note this patch has a long and griveous history, for all the back-and-forths have a look at CallSite.h's log. llvm-svn: 99399
* tighten a type and remove trailing whitespace, no functional changesGabor Greif2010-03-241-12/+12
| | | | llvm-svn: 99398
* add assert in argpromotion, which cannot triggerGabor Greif2010-03-231-4/+5
| | | | | | | | if Function::hasAddressTaken works as advertised also included some cosmetic cleanups llvm-svn: 99276
* backing out r99170 because it still fails on clang-x86_64-darwin10-fntGabor Greif2010-03-222-4/+4
| | | | llvm-svn: 99171
* Now that hopefully all direct accesses to InvokeInst operands are fixedGabor Greif2010-03-222-4/+4
| | | | | | we can reapply the InvokeInst operand reordering patch. (see r98957). llvm-svn: 99170
* Add a setCalledFunction member to InvokeInst (like in CallInst)Gabor Greif2010-03-201-2/+2
| | | | | | | and use this (as well as getCalledValue) to access the callee, instead of {g|s}etOperand(0). llvm-svn: 99084
* back out r98957, it broke ↵Gabor Greif2010-03-192-4/+4
| | | | | | http://smooshlab.apple.com:8010/builders/clang-x86_64-darwin10-fnt/builds/703 in the nightly test suite llvm-svn: 98958
* Recommit r80858 again (which has been backed out in r80871).Gabor Greif2010-03-192-4/+4
| | | | | | | | | | | This time I did a self-hosted bootstrap on Linux x86-64, with no problems. Let's see how darwin 64-bit self-hosting goes. At the first sign of failure I'll back this out. Maybe the valgrind bots give me a hint of what may be wrong (it at all). llvm-svn: 98957
* Try to keep the cached inliner costs around for a bit longer for big functions.Jakob Stoklund Olesen2010-03-093-6/+12
| | | | | | | | | | | | | | | The Caller cost info would be reset everytime a callee was inlined. If the caller has lots of calls and there is some mutual recursion going on, the caller cost info could be calculated many times. This patch reduces inliner runtime from 240s to 0.5s for a function with 20000 small function calls. This is a more conservative version of r98089 that doesn't break the clang test CodeGenCXX/temp-order.cpp. That test relies on rather extreme inlining for constant folding. llvm-svn: 98099
* Revert r98089, it was breaking a clang test.Jakob Stoklund Olesen2010-03-093-12/+6
| | | | llvm-svn: 98094
* Try to keep the cached inliner costs around for a bit longer for big functions.Jakob Stoklund Olesen2010-03-093-6/+12
| | | | | | | | | | | The Caller cost info would be reset everytime a callee was inlined. If the caller has lots of calls and there is some mutual recursion going on, the caller cost info could be calculated many times. This patch reduces inliner runtime from 240s to 0.5s for a function with 20000 small function calls. llvm-svn: 98089
* Add inlining threshold to log output.Jakob Stoklund Olesen2010-03-091-1/+4
| | | | llvm-svn: 98024
* Fix rdar://7694996 a miscompile of 183.equake from my patch yesterday,Chris Lattner2010-02-261-3/+2
| | | | | | | | | | | | | confusing the old MAT variable with the new GlobalType one. This caused us to promote the @disp global pointer into: @disp.body = internal global double*** undef instead of: @disp.body = internal global [3 x double**] undef llvm-svn: 97285
* remove dead code, by this point all uses of CI are gone.Chris Lattner2010-02-261-4/+1
| | | | llvm-svn: 97283
* fix PR6435 another bug from the MallocInst elimination work.Chris Lattner2010-02-261-3/+1
| | | | llvm-svn: 97231
* rewrite OptimizeGlobalAddressOfMalloc to fix PR6422, some bugsChris Lattner2010-02-251-79/+73
| | | | | | introduced when mallocinst was eliminated. llvm-svn: 97178
* Modernize comment.Nick Lewycky2010-02-251-1/+1
| | | | llvm-svn: 97121
* Correct whitespace.Nick Lewycky2010-02-251-1/+1
| | | | llvm-svn: 97120
* There are two ways of checking for a given type, for example isa<PointerType>(T)Duncan Sands2010-02-164-13/+13
| | | | | | | and T->isPointerTy(). Convert most instances of the first form to the second form. Requested by Chris. llvm-svn: 96344
* Uniformize the names of type predicates: rather than having isFloatTy andDuncan Sands2010-02-152-4/+4
| | | | | | isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! llvm-svn: 96223
* Enable the inlinehint attribute in the Inliner.Jakob Stoklund Olesen2010-02-131-13/+12
| | | | | | | | | | | | | | | | | | | | Functions explicitly marked inline will get an inlining threshold slightly more aggressive than the default for -O3. This means than -O3 builds are mostly unaffected while -Os builds will be a bit bigger and faster. The difference depends entirely on how many 'inline's are sprinkled on the source. In the CINT2006 suite, only these tests are significantly affected under -Os: Size Time 471.omnetpp +1.63% -1.85% 473.astar +4.01% -6.02% 483.xalancbmk +4.60% 0.00% Note that 483.xalancbmk runs too quickly to give useful timing results. llvm-svn: 96066
* 1. modernize the constantmerge pass, using densemap/smallvector.Chris Lattner2010-02-121-19/+22
| | | | | | | | | 2. don't bother trying to merge globals in non-default sections, doing so is quite dubious at best anyway. 3. fix a bug reported by Arnaud de Grandmaison where we'd try to merge two globals in different address spaces. llvm-svn: 95995
* Strip new llvm.dbg.value intrinsic.Devang Patel2010-02-101-0/+9
| | | | llvm-svn: 95807
* Fix "the the" and similar typos.Dan Gohman2010-02-102-2/+2
| | | | llvm-svn: 95781
* Reintroduce the InlineHint function attribute.Jakob Stoklund Olesen2010-02-061-7/+24
| | | | | | | | | | | | This time it's for real! I am going to hook this up in the frontends as well. The inliner has some experimental heuristics for dealing with the inline hint. When given a -respect-inlinehint option, functions marked with the inline keyword are given a threshold just above the default for -O3. We need some experiments to determine if that is the right thing to do. llvm-svn: 95466
OpenPOWER on IntegriCloud