summaryrefslogtreecommitdiffstats
path: root/clang/utils/TableGen/ClangAttrEmitter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* [C++11] Add 'override' keyword to virtual methods that override their base ↵Craig Topper2014-03-111-6/+6
| | | | | | class. llvm-svn: 203543
* [C++11] Add 'override' keyword to virtual methods that override their base ↵Craig Topper2014-03-111-3/+3
| | | | | | class. llvm-svn: 203537
* [C++11] Adding override specifiers where appropriate, and removing virtual ↵Aaron Ballman2014-03-061-105/+101
| | | | | | | | specifiers where not needed. No functional changes intended. llvm-svn: 203122
* [C++11] Using std::unique_ptr to ensure that Argument objects do not leak ↵Aaron Ballman2014-03-051-50/+45
| | | | | | (since clang-tblgen isn't long-lived, the old leak is probably acceptable, but it offended my senses nonetheless). llvm-svn: 202989
* Pass llvm::Triple objects by const reference.Benjamin Kramer2014-03-041-2/+2
| | | | | | Copying isn't cheap as it contains a std::string. llvm-svn: 202880
* [cleanup] Re-sort includes with llvm/utils/sort_includes.py and fixChandler Carruth2014-03-041-1/+1
| | | | | | | | | | | | a missing include from CLog.h. CLog.h referenced most of the core libclang types but never directly included Index.h that provides them. Previously it got lucky and other headers were always included first but with the sorting it ended up first in one case and stopped compiling. Adding the Index.h include fixes it right up. llvm-svn: 202810
* Simplifying attribute generation with range-based for loops. No functional ↵Aaron Ballman2014-03-021-277/+187
| | | | | | changes intended. llvm-svn: 202654
* [C++11] Replace llvm::next and llvm::prior with std::next and std::prev.Benjamin Kramer2014-03-021-1/+1
| | | | llvm-svn: 202635
* Moving the documentation for the type safety checking attributes into ↵Aaron Ballman2014-02-211-1/+2
| | | | | | AttrDocs. If a custom heading is provided, do not automatically generate the alternate spelling list. This is necessary because some attributes have distinct semantic spellings and meanings, but use the same semantic attribute internally. Such attributes should have multiple elements in their documentation list, but not show all spellings. At some point, it would be nice to have a way to attach the documentation element to a specific spelling for these cases. llvm-svn: 201851
* Refactored the way attribute category headers are handled so that it is ↵Aaron Ballman2014-02-191-49/+25
| | | | | | possible to use custom categories. This allows for moving the consumable attributes (consumable, callable_when, return_typestate, etc) to be grouped together, with a content heading, like they were in the language extensions documentation. Moved the consumable attribute documentation from the language extensions into the attribute documentation table. llvm-svn: 201732
* Added a documentation category for statement attributes so that things like ↵Aaron Ballman2014-02-191-0/+6
| | | | | | clang::fallthrough can be documented. llvm-svn: 201714
* Forcing it to be an error when there is no Documentation list specified for ↵Aaron Ballman2014-02-171-0/+11
| | | | | | an attribute. This is a bit of a (harmless) hack, but the FIXME explains why and when this hack can be removed. It's a justified hack because this prevents attribute authors from forgetting to add documentation when they add a new attribute. llvm-svn: 201524
* The default assignment operator could not be generated by all of the bots, ↵Aaron Ballman2014-02-171-11/+11
| | | | | | but it's required by std::vector to operate properly. llvm-svn: 201518
* Removing a C++11'ism to also fix the build bots.Aaron Ballman2014-02-171-2/+3
| | | | llvm-svn: 201517
* Fixing build bot breakage due to using a local type as a template argument.Aaron Ballman2014-02-171-7/+7
| | | | llvm-svn: 201516
* Implements a declarative approach to documenting individual attributes in ↵Aaron Ballman2014-02-171-0/+228
| | | | | | | | Clang via a Documentation tablegen class. Also updates the internals manual with information about how to use this new, required, documentation feature. This patch adds some very, very sparse initial documentation for some attributes. Additional effort from attribute authors is greatly appreciated. llvm-svn: 201515
* Attributes: Avoid a big useless copy in the emitterReid Kleckner2014-02-121-1/+2
| | | | llvm-svn: 201251
* Attributes: Emit enumerators in td file declaration orderReid Kleckner2014-02-121-9/+18
| | | | llvm-svn: 201246
* MS ABI: Add support for #pragma pointers_to_membersDavid Majnemer2014-02-101-0/+3
| | | | | | | | | | | | | | | | | | | Introduce a notion of a 'current representation method' for pointers-to-members. When starting out, this is set to 'best case' (representation method is chosen by examining the class, selecting the smallest representation that would work given the class definition or lack thereof). This pragma allows the translation unit to dictate exactly what representation to use, similar to how the inheritance model keywords operate. N.B. PCH support is forthcoming. Differential Revision: http://llvm-reviews.chandlerc.com/D2723 llvm-svn: 201105
* Consolidating several table-generated files containing parser-related string ↵Aaron Ballman2014-01-291-119/+122
| | | | | | | | switches into a single file. This reduces build-related complexity by replacing four separate projects (and table-gen instantiations) with a single one. No functional changes intended. llvm-svn: 200424
* Add a new attribute meta-spelling called "GCC" -- it widens into being a GNU ↵Aaron Ballman2014-01-271-97/+119
| | | | | | | | spelling, and a CXX11 spelling with the namespace "gnu". It also sets a bit on the spelling certifying that it is known to GCC. From this, we can warn about the extension appropriately. As a consequence, the FunctionDefinition functionality is completely removed. Replacing the functionality from r199676, which didn't solve the problem as elegantly. llvm-svn: 200252
* Adds a getSemanticSpelling function to semantic attribute subclasses which ↵Aaron Ballman2014-01-241-39/+110
| | | | | | have a meaningful semantic spelling. Adds a sibling function to parsed attribtues (via AttributeList) for getting the semantic spelling, if one were to exist. This can be used for cleaner code that deals directly with the semantic spellings (such as the MSInheritance attribute). llvm-svn: 200041
* If an attribute has a semantically meaningful spelling (such as ↵Aaron Ballman2014-01-221-0/+8
| | | | | | ArgumentWithTypeTagAttr or MSInheritanceAttr), display the spelling used for the attribute as part of the AST dump. This should ease debugging the AST for these attributes. Attributes without semantically meaningful spelling variations are not affected. llvm-svn: 199834
* Exposed a declarative way to specify that an attribute can be duplicated ↵Aaron Ballman2014-01-201-0/+3
| | | | | | when merging attributes on a declaration. This replaces some hard-coded functionality from Sema. llvm-svn: 199677
* Remove some hard-coded specialness for thread-safety attributes from the ↵Aaron Ballman2014-01-201-0/+22
| | | | | | parser, and made it more declarative. If an attribute is allowed to appear on a function definition when late parsed, it can now use the FunctionDefinition attribute subject. It's treated as a FunctionDecl for most purposes, except it also gets exposed on the AttributeList so that it can be used while parsing. llvm-svn: 199676
* Fix comment typosAlp Toker2014-01-181-2/+2
| | | | llvm-svn: 199563
* When generating Spelling enumeration values, do not generate identifiers in ↵Aaron Ballman2014-01-161-3/+19
| | | | | | the reserved namespace. Strip underscores as appropriate, taking care to not create duplicate identifiers. llvm-svn: 199414
* Fixing a warning that causes the sanitizer build disliked about mixing && ↵Aaron Ballman2014-01-161-3/+4
| | | | | | and ||. Since this is generated code, the && has been removed from the expression entirely. llvm-svn: 199392
* Factored some function-like type reasoning out of SemaDeclAttr and onto Decl ↵Aaron Ballman2014-01-161-4/+10
| | | | | | itself. This allows for more declarative subjects in attribute tablegen where the attribute appertains to something function-like, but not strictly a FunctionDecl. llvm-svn: 199387
* Distinguish between attributes explicitly written at the request of the ↵Aaron Ballman2014-01-161-5/+98
| | | | | | | | user, and attributes implicitly generated to assist in bookkeeping by the compiler. This is done so by table generating a CreateImplicit method for each attribute. Additionally, remove the optional nature of the spelling list index when creating attributes. This is supported by table generating a Spelling enumeration when the spellings for an attribute are distinct enough to warrant it. llvm-svn: 199378
* When determining the attribute's parsed kind, pay attention to the syntax ↵Aaron Ballman2014-01-131-21/+42
| | | | | | used. This fixes bugs where an attribute has differing GNU and Declspec spellings, but they are treated as the same. Eg) __declspec(aligned) when it should be __attribute__((aligned)), and __attribute__((align)) when it should be __declspec(align). llvm-svn: 199144
* __has_attribute now understands target-specific attributes. So when you ask ↵Aaron Ballman2014-01-091-6/+43
| | | | | | whether an ARM target has the "interrupt" attribute, it will return true for ARM and MSP430 targets, and false for others. llvm-svn: 198897
* Removing the notion of TargetAttributesSema and replacing it with one where ↵Aaron Ballman2014-01-091-4/+113
| | | | | | the parsed attributes are responsible for knowing their target-specific nature, instead of letting Sema figure it out. This is necessary so that __has_attribute can eventually determine whether a parsed attribute applies to the given target or not. llvm-svn: 198896
* Removing a bit of custom parsing functionality used by the thread safety ↵Aaron Ballman2014-01-091-0/+27
| | | | | | analysis APIs. Now using tablegen to determine whether an attribute's arguments should be parsed in an unevaluated context instead of relying on a separate, hard-coded list of attributes. llvm-svn: 198883
* Sort all the #include lines with LLVM's utils/sort_includes.py whichChandler Carruth2014-01-071-3/+3
| | | | | | | encodes the canonical rules for LLVM's style. I noticed this had drifted quite a bit when cleaning up LLVM, so wanted to clean up Clang as well. llvm-svn: 198686
* This helper method isn't needed, and it's unsafe for it to use StringRef in ↵Aaron Ballman2014-01-051-33/+12
| | | | | | the first place. Replaced the unsafe code with the proper accessor. llvm-svn: 198569
* Update DataRecursiveASTVisitor so that it visits attributes.DeLesley Hutchins2013-12-301-2/+2
| | | | llvm-svn: 198249
* Update RecursiveASTVisitor so that it visits attributes. This is currentlyDeLesley Hutchins2013-12-301-0/+99
| | | | | | | | important for thread safety attributes, which contain expressions that were not being visited, and were thus invisible to various tools. There are now Visit*Attr methods that can be overridden for every attribute. llvm-svn: 198224
* Teach the diagnostics engine about the Attr type to make reporting on ↵Aaron Ballman2013-12-261-0/+25
| | | | | | semantic attributes easier (and not require hard-coded strings). This requires a getSpelling() function on the Attr class, which is table-driven. Updates a handful of cases where a hard-coded string was being used to test the functionality out. Updating associated test cases for the improved quoting. llvm-svn: 198055
* Reverting r197715 -- it appears that MSVC is happy with the code, but clang ↵Aaron Ballman2013-12-191-52/+24
| | | | | | is not. llvm-svn: 197716
* No longer leaking Argument objects after calling createArgument. However, ↵Aaron Ballman2013-12-191-24/+52
| | | | | | since an OwningPtr cannot live in a std::vector yet, there are some manual deletions that have a FIXME attached to them. These will go away once C++11 support is allowed. llvm-svn: 197715
* Removing the SourceLocation unused attribute argument type.Aaron Ballman2013-12-191-10/+0
| | | | llvm-svn: 197707
* Refactor the Microsoft inheritance attribute handling so that it no longer ↵Aaron Ballman2013-12-181-16/+1
| | | | | | 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
* Allow target-specific attributes to share a spelling between different ↵Aaron Ballman2013-12-151-30/+46
| | | | | | | | | | attributes via the ParseKind field. Attributes will be given a common parsed attribute identifier (the AttributeList::AT_* enum), but retain distinct Attr subclasses. This new functionality is used to implement the ARM and MSP430 interrupt attribute. Patch reviewed by Richard Smith over IRC. llvm-svn: 197343
* Enhance attribute machinery to include ObjCProtocols as "subjects" in ↵Ted Kremenek2013-12-101-1/+4
| | | | | | attribute declarations. llvm-svn: 196954
* Typo caught by Alp Toker: s/appertain/appertainsAaron Ballman2013-12-031-1/+1
| | | | llvm-svn: 196273
* Rectifying style issues with generated code. No functional change intended.Aaron Ballman2013-12-021-4/+4
| | | | llvm-svn: 196142
* Automate attribute language option checking by specifying the list of ↵Aaron Ballman2013-12-021-1/+52
| | | | | | options to test in tablegen. llvm-svn: 196138
* Re-enabled support for the Subjects for the weak attribute. This changes the ↵Aaron Ballman2013-12-021-0/+6
| | | | | | diagnostic involved to be more accurate -- for C++ code, it will now report that weak applies to variables, functions or classes. Added additional test case for this. llvm-svn: 196120
* Using the proper set key when determining whether a SubsetSubject helper ↵Aaron Ballman2013-12-021-2/+3
| | | | | | method has been previously generated. llvm-svn: 196103
OpenPOWER on IntegriCloud