summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO/StructRetPromotion.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* API changes for class Use size reduction, wave 1.Gabor Greif2008-04-061-8/+8
| | | | | | | | Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. llvm-svn: 49277
* Reimplement the parameter attributes support, phase #1. hilights:Chris Lattner2008-03-121-24/+20
| | | | | | | | | | | | | | | | | | | | | | | 1. There is now a "PAListPtr" class, which is a smart pointer around the underlying uniqued parameter attribute list object, and manages its refcount. It is now impossible to mess up the refcount. 2. PAListPtr is now the main interface to the underlying object, and the underlying object is now completely opaque. 3. Implementation details like SmallVector and FoldingSet are now no longer part of the interface. 4. You can create a PAListPtr with an arbitrary sequence of ParamAttrsWithIndex's, no need to make a SmallVector of a specific size (you can just use an array or scalar or vector if you wish). 5. All the client code that had to check for a null pointer before dereferencing the pointer is simplified to just access the PAListPtr directly. 6. The interfaces for adding attrs to a list and removing them is a bit simpler. Phase #2 will rename some stuff (e.g. PAListPtr) and do other less invasive changes. llvm-svn: 48289
* Fix attribute handling.Devang Patel2008-03-121-14/+14
| | | | llvm-svn: 48262
* Initialize.Devang Patel2008-03-111-2/+2
| | | | llvm-svn: 48253
* Skip, for now, callsites where use of sret argument is not dominated by ↵Devang Patel2008-03-051-0/+4
| | | | | | callsite. llvm-svn: 47980
* Filter nested structsDevang Patel2008-03-041-0/+16
| | | | llvm-svn: 47906
* 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-031-1/+1
| | | | llvm-svn: 47857
* Preserve paramater attributes.Devang Patel2008-03-031-2/+31
| | | | llvm-svn: 47847
* 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
OpenPOWER on IntegriCloud