summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
* add a pass that can extract all kinds of global values, not just functions. ↵Andrew Lenharth2008-03-071-0/+174
| | | | | | Update llvm-extract to use it and optionally extract a global variable if you want it too llvm-svn: 48015
* fix typosGabor Greif2008-03-062-2/+2
| | | | llvm-svn: 47994
* Don't try to simplify urem and srem using arithmetic rules that don't workNick Lewycky2008-03-061-43/+96
| | | | | | under modulo (overflow). Fixes PR1933. llvm-svn: 47987
* Skip, for now, callsites where use of sret argument is not dominated by ↵Devang Patel2008-03-051-0/+4
| | | | | | callsite. llvm-svn: 47980
* Handle 'ret' with multiple values.Devang Patel2008-03-051-11/+23
| | | | llvm-svn: 47965
* Skip functions that return multiple values.Devang Patel2008-03-051-0/+5
| | | | llvm-svn: 47924
* Use while loop.Devang Patel2008-03-041-3/+2
| | | | llvm-svn: 47909
* Use cast instead of dyn_cast.Devang Patel2008-03-041-2/+1
| | | | | | Update test to use multiple return value directly, instead of relying on -sretpromotion. llvm-svn: 47907
* Filter nested structsDevang Patel2008-03-041-0/+16
| | | | llvm-svn: 47906
* Handle multiple return values.Devang Patel2008-03-041-3/+15
| | | | llvm-svn: 47904
* Use appropriate index to get the result value.Devang Patel2008-03-041-1/+3
| | | | llvm-svn: 47897
* Skip sret attribute while preparing attribute list forDevang Patel2008-03-041-11/+21
| | | | | | new function and new call sites. llvm-svn: 47896
* Increment counter that keeps track of total number of sret promoted.Devang Patel2008-03-041-0/+1
| | | | llvm-svn: 47892
* Skip declarations.Devang Patel2008-03-041-1/+1
| | | | llvm-svn: 47890
* Process externally visible functions also. Later on code generator will do ↵Devang Patel2008-03-041-2/+1
| | | | | | the right thing. llvm-svn: 47889
* Collect statistics.Devang Patel2008-03-041-5/+11
| | | | llvm-svn: 47888
* s/isReturnStruct()/hasStructRetAttr()/gDevang Patel2008-03-032-2/+2
| | | | llvm-svn: 47857
* Preserve paramater attributes.Devang Patel2008-03-031-2/+31
| | | | llvm-svn: 47847
* allow specified inline threshold to be negative, as the value is Chris Lattner2008-03-011-1/+1
| | | | | | itself sometimes negative. llvm-svn: 47786
* Fix cut-n-pasto.Devang Patel2008-02-291-19/+1
| | | | llvm-svn: 47777
* Add pass to promote sret.Devang Patel2008-02-291-0/+292
| | | | | | | | | | | | | | | | | | | This pass transforms %struct._Point = type { i32, i32, i32, i32, i32, i32 } define internal void @foo(%struct._Point* sret %agg.result) into %struct._Point = type { i32, i32, i32, i32, i32, i32 } define internal %struct._Point @foo() This pass updates foo() clients appropriately to use getresult instruction to extract return values. This pass is not yet ready for prime time. llvm-svn: 47776
* fix a bug Anders ran into where scalarrepl would crash when promotingChris Lattner2008-02-291-57/+68
| | | | | | | | a union containing a vector and an array whose elements were smaller than the vector elements. this means we need to compile the load of the array elements into an extract element plus a truncate. llvm-svn: 47752
* Refactor some code out of ConvertUsesToScalar into their own methods, noChris Lattner2008-02-291-148/+190
| | | | | | functionality change. llvm-svn: 47751
* Folding or(fcmp,fcmp) only works if the operands of the fcmps are the same ↵Chris Lattner2008-02-291-1/+2
| | | | | | fp type. llvm-svn: 47750
* Fix an issue where GVN had the sizes of the two memcpy's reverse, resultingOwen Anderson2008-02-261-2/+2
| | | | | | in an invalid transformation. llvm-svn: 47639
* fix http://llvm.org/bugs/show_bug.cgi?id=2097Gabor Greif2008-02-261-1/+1
| | | | llvm-svn: 47615
* Fix for pr2093: direct operands aren't necessarily addresses, so don't Eli Friedman2008-02-261-1/+2
| | | | | | try to simplify them. llvm-svn: 47610
* De-tabify.Bill Wendling2008-02-262-24/+24
| | | | llvm-svn: 47599
* Fix PR2076. CodeGenPrepare now sinks address computation for inline asm memoryEvan Cheng2008-02-261-0/+55
| | | | | | operands into inline asm block. llvm-svn: 47589
* Fix an issue where GVN was performing the return slot optimization when it wasOwen Anderson2008-02-251-8/+26
| | | | | | | not safe. This is fixed by more aggressively checking that the return slot is not used elsewhere in the function. llvm-svn: 47544
* Fix an issue where GVN would try to use an instruction before its definition ↵Owen Anderson2008-02-251-0/+7
| | | | | | when performing return slot optimization. llvm-svn: 47541
* Split ParameterAttributes.h, putting the complicatedDale Johannesen2008-02-225-5/+5
| | | | | | | stuff into ParamAttrsList.h. Per feedback from ParamAttrs changes. llvm-svn: 47504
* Fixed a typo.Zhou Sheng2008-02-221-1/+1
| | | | llvm-svn: 47478
* Add explicit keywords.Dan Gohman2008-02-201-1/+1
| | | | llvm-svn: 47382
* Fix newly-introduced 4.3 warningsAnton Korobeynikov2008-02-202-3/+3
| | | | llvm-svn: 47375
* Get rid of hash_map. Use StringMap insteadAnton Korobeynikov2008-02-201-3/+3
| | | | llvm-svn: 47373
* Make Transforms to be 4.3 warnings-cleanAnton Korobeynikov2008-02-209-39/+58
| | | | llvm-svn: 47371
* Unbreak build with gcc 4.3: provide missed includes and silence most ↵Anton Korobeynikov2008-02-202-1/+3
| | | | | | annoying warnings. llvm-svn: 47367
* When performing return slot optimization, remember to inform memdep when ↵Owen Anderson2008-02-201-0/+1
| | | | | | we're removing the memcpy. llvm-svn: 47364
* Expand ParameterAttributes to 32 bits (in preparationDale Johannesen2008-02-194-19/+31
| | | | | | | for adding alignment info, not there yet). Clean up interfaces to reference ParameterAttributes consistently. llvm-svn: 47342
* remove the LowerSelect pass. The last client was the old Sparc backend, ↵Chris Lattner2008-02-196-110/+0
| | | | | | which is long dead by now. llvm-svn: 47323
* remove the lower packed pass. It can never work and even the parts that Chris Lattner2008-02-191-448/+0
| | | | | | | could work don't work fully. This fixes PR1705. Oh yeah, we don't have packed types anymore either ;-) llvm-svn: 47322
* Refactor this method a bit, and correct a test that was completely wrong but ↵Owen Anderson2008-02-191-7/+11
| | | | | | happened to work out anyways. :-) llvm-svn: 47321
* isa+cast -> dyncast.Chris Lattner2008-02-191-2/+2
| | | | llvm-svn: 47320
* simplify this code again, try 2 :)Chris Lattner2008-02-191-7/+5
| | | | llvm-svn: 47319
* Fix a comment.Owen Anderson2008-02-191-1/+1
| | | | llvm-svn: 47318
* Major improvements to yesterday's return slot optimization. Remove some ↵Owen Anderson2008-02-191-14/+39
| | | | | | | | unneccessary constraints, and add some others that should have been in from the first place. Document the whole thing better. llvm-svn: 47315
* fdiv/frem of undef can produce undef, because the undef operand Chris Lattner2008-02-191-4/+11
| | | | | | | can be a SNaN. We could be more aggressive and turn this into unreachable, but that is less nice, and not really worth it. llvm-svn: 47313
* Factor the profitability check for return slot optimization out into a ↵Owen Anderson2008-02-191-14/+26
| | | | | | | | static function. At some point in the future, this check will become smarter. llvm-svn: 47310
* An sret parameter is required to be the first parameter, so there's no need ↵Owen Anderson2008-02-191-8/+3
| | | | | | | | to loop over all the parameters of the callee looking for it. llvm-svn: 47309
OpenPOWER on IntegriCloud