summaryrefslogtreecommitdiffstats
path: root/llvm/lib/VMCore/ParameterAttributes.cpp
Commit message (Collapse)AuthorAgeFilesLines
* s/ParameterAttributes/Attributes/gDevang Patel2008-09-231-297/+0
| | | | llvm-svn: 56513
* Use parameter attribute store (soon to be renamed) forDevang Patel2008-09-231-0/+1
| | | | | | Function Notes also. Function notes are stored at index ~0. llvm-svn: 56511
* Fix the AsmWriter to not print extra spaces after parameter attributes.Dan Gohman2008-08-051-0/+2
| | | | llvm-svn: 54351
* Various improvements suggested by DuncanChris Lattner2008-03-131-1/+1
| | | | llvm-svn: 48325
* Reimplement the parameter attributes support, phase #1. hilights:Chris Lattner2008-03-121-140/+203
| | | | | | | | | | | | | | | | | | | | | | | 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
* Use utostr instead of a stringstream.Dan Gohman2008-03-101-4/+2
| | | | llvm-svn: 48198
* Split ParameterAttributes.h, putting the complicatedDale Johannesen2008-02-221-2/+2
| | | | | | | stuff into ParamAttrsList.h. Per feedback from ParamAttrs changes. llvm-svn: 47504
* Fix newly-introduced 4.3 warningsAnton Korobeynikov2008-02-201-1/+1
| | | | llvm-svn: 47375
* Add Alignment field to ParameterAttributes andDale Johannesen2008-02-191-1/+23
| | | | | | | treat more or less rationally in interface functions, subject to change. No functional change. llvm-svn: 47352
* Expand ParameterAttributes to 32 bits (in preparationDale Johannesen2008-02-191-10/+12
| | | | | | | for adding alignment info, not there yet). Clean up interfaces to reference ParameterAttributes consistently. llvm-svn: 47342
* Some micro-optimizations.Duncan Sands2008-02-161-4/+5
| | | | llvm-svn: 47219
* It turns out that in C++ it is legal to declare functionsDuncan Sands2008-01-211-6/+1
| | | | | | | | | | | | | that return an opaque type by value, as long as you don't call it or provide a body (you can take the address of it). So it is wrong to insist that sret parameters not be an opaque*. And I guess it is really up to codegen to complain if someone tries to call such a function. I'm also removing the analogous check from byval parameters, since I don't see why we shouldn't allow them as long as no-one tries to call the function or give it a body. llvm-svn: 46216
* Check that sret is only used on pointers to typesDuncan Sands2008-01-211-2/+2
| | | | | | with a size, like byval. llvm-svn: 46207
* I noticed that the trampoline straightening transformation couldDuncan Sands2008-01-141-0/+7
| | | | | | | | | drop attributes on varargs call arguments. Also, it could generate invalid IR if the transformed call already had the 'nest' attribute somewhere (this can never happen for code coming from llvm-gcc, but it's a theoretical possibility). Fix both problems. llvm-svn: 45973
* Allow the byval attribute for pointers to any type withDuncan Sands2008-01-131-2/+2
| | | | | | a size, not just structs. llvm-svn: 45938
* Small cleanup for handling of type/parameter attributeDuncan Sands2008-01-071-7/+9
| | | | | | incompatibility. llvm-svn: 45704
* The transform that tries to turn calls to bitcast functions intoDuncan Sands2008-01-061-45/+18
| | | | | | | | | direct calls bails out unless caller and callee have essentially equivalent parameter attributes. This is illogical - the callee's attributes should be of no relevance here. Rework the logic, which incidentally fixes a crash when removed arguments have attributes. llvm-svn: 45658
* Trying that again.Gordon Henriksen2008-01-031-1/+0
| | | | llvm-svn: 45529
* Fix a compile error on Windows.Gordon Henriksen2008-01-031-0/+2
| | | | llvm-svn: 45528
* Don't create a new ParamAttrsList (which copies the vector) just to Chris Lattner2008-01-031-6/+6
| | | | | | get a profile. llvm-svn: 45524
* move some code out of line, rearrange a bit.Chris Lattner2008-01-031-6/+10
| | | | llvm-svn: 45519
* Split param attr implementation out from Function.cpp into itsChris Lattner2008-01-021-0/+226
own file. Don't #include ParameterAttributes.h into any major public header files: just move methods out of line as appropriate. llvm-svn: 45517
OpenPOWER on IntegriCloud