summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/AttrImpl.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [NFC] Header cleanupMehdi Amini2016-07-181-2/+1
| | | | | | | | | | Summary: Removed unused headers, replaced some headers with forward class declarations Patch by: Eugene <claprix@yandex.ru> Differential Revision: https://reviews.llvm.org/D20100 llvm-svn: 275882
* Devirtualize Attr and all subclasses.Benjamin Kramer2015-03-191-7/+1
| | | | | | | | | | | | We know all subclasses in tblgen so just generate a giant switch for the few virtual methods or turn them into a member variable using spare bits. The giant jump tables aren't pretty but still much smaller than a vtable for every attribute, shrinking Release+Asserts clang by ~400k. Also halves the size of the Attr base class. No functional change intended. llvm-svn: 232726
* Refactor the Microsoft inheritance attribute handling so that it no longer ↵Aaron Ballman2013-12-181-2/+0
| | | | | | has special treatment. Also fixes a minor bug where the attributes were being parsed as though they were GNU-style attributes when they were in fact keyword attributes. llvm-svn: 197629
* Tablegen now generates a StringSwitch for attributes containing enumeration ↵Aaron Ballman2013-09-111-0/+1
| | | | | | arguments to map strings to the proper enumeration value. This makes error checking more consistent and reduces the amount of hand-written code required. llvm-svn: 190545
* [ms-cxxabi] Give the MS inheritance attributes a base classReid Kleckner2013-03-261-0/+2
| | | | | | | | Required making a handful of changes to the table generator. Also adds an unspecified inheritance attribute. This opens the path for us to apply these attributes to C++ records implicitly. llvm-svn: 178054
* Sort all of Clang's files under 'lib', and fix up the broken headersChandler Carruth2012-12-041-1/+1
| | | | | | | | | | | | | uncovered. This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files. I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers. llvm-svn: 169237
* Unweaken vtables as per ↵David Blaikie2011-12-201-0/+4
| | | | | | http://llvm.org/docs/CodingStandards.html#ll_virtual_anch llvm-svn: 146959
* Generate Attr subclasses with TableGen.Alexis Hunt2010-08-181-224/+3
| | | | | | | | | | | | | | | | | | | | | | | | Now all classes derived from Attr are generated from TableGen. Additionally, Attr* is no longer its own linked list; SmallVectors or Attr* are used. The accompanying LLVM commit contains the updates to TableGen necessary for this. Some other notes about newly-generated attribute classes: - The constructor arguments are a SourceLocation and a Context&, followed by the attributes arguments in the order that they were defined in Attr.td - Every argument in Attr.td has an appropriate accessor named getFoo, and there are sometimes a few extra ones (such as to get the length of a variadic argument). Additionally, specific_attr_iterator has been introduced, which will iterate over an AttrVec, but only over attributes of a certain type. It can be accessed through either Decl::specific_attr_begin/end or the global functions of the same name. llvm-svn: 111455
* Patch to add type parameter support for attribute iboutletcollection.Fariborz Jahanian2010-08-171-1/+1
| | | | | | Radar 8308053. llvm-svn: 111275
* Remove OwnershipAttr::Kind, since it's essentially redundant with attr::Kind ↵Jordy Rose2010-08-121-13/+9
| | | | | | the way it's being used. Also fix isa<OwnershipAttr> support, break more-than-80-char lines, and other miscellaneous ownership attr cleanup. llvm-svn: 110908
* Instead of having a specific CXTranslationUnit_* option flag forDouglas Gregor2010-08-091-0/+1
| | | | | | | | "editing" mode, introduce a separate function clang_defaultEditingTranslationUnitOptions() that retrieves the set of options. No functionality change. llvm-svn: 110613
* Added vecreturn attribute parsing.John Thompson2010-08-091-0/+1
| | | | llvm-svn: 110609
* Implement #pragma GCC visibility.Eli Friedman2010-08-051-1/+1
| | | | llvm-svn: 110315
* After a lengthy design discussion, add support for "ownership attributes" ↵Ted Kremenek2010-07-311-0/+53
| | | | | | for malloc/free checking. Patch by Andrew McGregor! llvm-svn: 109939
* I lied. Kill off a few more Destroy methodsDouglas Gregor2010-07-251-19/+1
| | | | llvm-svn: 109379
* implement support for -finstrument-functions, patch by NelsonChris Lattner2010-06-221-0/+1
| | | | | | Elhage! llvm-svn: 106507
* Implements Sema part of init_priority(priority) attributeFariborz Jahanian2010-06-181-0/+4
| | | | | | (radar 8076356) - wip. llvm-svn: 106322
* Implement first TD-based usage of attributes.Alexis Hunt2010-06-161-2/+2
| | | | | | | | | | | | | | | | | Currently, there are two effective changes: - Attr::Kind has been changed to attr::Kind, in a separate namespace rather than the Attr class. This is because the enumerator needs to be visible to parse. - The class definitions for the C++0x attributes other than aligned are generated by TableGen. The specific classes generated by TableGen are controlled by an array in TableGen (see the accompanying commit to the LLVM repository). I will be expanding the amount of code generated as I develop the new attributes system while initially keeping it confined to these attributes. llvm-svn: 106172
* AST: Add AlignMac68kAttr, not yet used.Daniel Dunbar2010-05-271-0/+1
| | | | llvm-svn: 104800
* AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.Daniel Dunbar2010-05-271-2/+2
| | | | llvm-svn: 104795
* Add clang support for IBOutletCollection.Ted Kremenek2010-05-191-0/+4
| | | | llvm-svn: 104135
* Add support for Microsoft's __thiscall, from Steven Watanabe!Douglas Gregor2010-05-181-0/+1
| | | | llvm-svn: 104026
* Add support for the weakref attribute. We still produce "alias weak" as ↵Rafael Espindola2010-02-231-2/+1
| | | | | | llvm-gcc does, but are more strict on what uses of weakref we accept. llvm-svn: 96992
* Add 'ns_returns_not_retained' and 'cf_returns_not_retained' attributes toTed Kremenek2010-02-181-22/+24
| | | | | | | match 'ns_returns_retained' and 'cf_returns_retained' respectively. These are not yet hooked up to the static analyzer. llvm-svn: 96535
* Add IBAction attribute to keep the IBOutlet attribute company.Ted Kremenek2010-02-171-0/+4
| | | | llvm-svn: 96447
* Fix re-allocation in AttrWithString::ReplaceString() to use the allocator ↵Ted Kremenek2010-02-111-1/+1
| | | | | | assosciated with ASTContext. llvm-svn: 95931
* Use the allocator associated with ASTContext to allocate the argsTed Kremenek2010-02-111-1/+17
| | | | | | | | array associated with NonNullAttr. This fixes yet another leak when ASTContext uses a BumpPtrAllocator. Fixes: <rdar://problem/7637150> llvm-svn: 95863
* Remove use of 'std::string' from Attr objects, using instead a byteTed Kremenek2010-02-111-6/+40
| | | | | | | | | array allocated using the allocator in ASTContext. This addresses these strings getting leaked when using a BumpPtrAllocator (in ASTContext). Fixes: <rdar://problem/7636765> llvm-svn: 95853
* Add support for the force_align_arg_pointer attribute. This is an x86-specificCharles Davis2010-02-101-0/+1
| | | | | | | | attribute, so it uses Anton's new target-specific attribute support. It's supposed to ensure that the stack is 16-byte aligned, but since necessary support is lacking from LLVM, this is a no-op for now. llvm-svn: 95820
* Make clone() method out-of-line for Attr classes.Anton Korobeynikov2010-01-101-0/+143
llvm-svn: 93120
OpenPOWER on IntegriCloud