| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 199663
|
|
|
|
|
|
|
|
|
|
|
| |
This attribute is supported by GCC. More generally it should
probably be a type attribute, but this behavior matches 'nonnull'.
This patch does not include warning logic for checking if a null
value is returned from a function annotated with this attribute.
That will come in subsequent patches.
llvm-svn: 199626
|
|
|
|
| |
llvm-svn: 199625
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows the following syntax:
void baz(__attribute__((nonnull)) const char *str);
instead of:
void baz(const char *str) __attribute__((nonnull(1)));
This also extends to Objective-C methods.
The checking logic in Sema is not as clean as I would like. Effectively
now we need to check both the FunctionDecl/ObjCMethodDecl and the parameters,
so the point of truth is spread in two places, but the logic isn't that
cumbersome.
Implements <rdar://problem/14691443>.
llvm-svn: 199467
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 199230
|
|
|
|
|
|
| |
parameter because the required information is encoded in the spelling. Added an appropriate subject to the attribute, and simplified the semantic checking (which will likely be expanded upon in a future patch). Also, removed the GNU spelling since it was unsupported in the first place.
llvm-svn: 199229
|
|
|
|
|
|
|
|
| |
consumable objects. These are useful for implementing error codes that
must be checked. Patch also includes some significant refactoring, which was
necesary to implement the new behavior.
llvm-svn: 199169
|
|
|
|
|
|
| |
resolution based on the values of the function arguments at the call site.
llvm-svn: 198996
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Patch reviewed by Rafael Espindola.
llvm-svn: 198765
|
|
|
|
|
|
| |
how to handle Attr objects directly. Updates an associated test case due to the attribute name being properly quoted again.
llvm-svn: 198424
|
|
|
|
|
|
| |
already knows how it was spelled.
llvm-svn: 198375
|
|
|
|
|
|
| |
Updated the associated testcase because QualType pretty printing was an improvement.
llvm-svn: 198372
|
|
|
|
| |
llvm-svn: 198371
|
|
|
|
|
|
| |
the offending attribute name. Also updates the associated test cases.
llvm-svn: 198355
|
|
|
|
|
|
| |
manually quote. No functional changes intended.
llvm-svn: 198076
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
name will be quoted in the diagnostic. Manually added some quotes to a diagnostic for consistency. Updated the test cases as appropriate.
llvm-svn: 198054
|
|
|
|
|
|
|
|
| |
coverage. Parameterized the diagnostic, and made it more consistent with other attribute diagnostic wordings. Added test coverage.
Since this warning was generalized, it was also given a sensible warning group flag and the corresponding test was updated to reflect this.
llvm-svn: 198053
|
|
|
|
|
|
| |
StringRefs. No functional changes intended.
llvm-svn: 198051
|
|
|
|
| |
llvm-svn: 198050
|
|
|
|
|
|
| |
changes intended.
llvm-svn: 198047
|
|
|
|
|
|
|
|
| |
has already been determined to be a ValueDecl by virtue of the attribute subjects.
Added some test case coverage as well.
llvm-svn: 198046
|
|
|
|
| |
llvm-svn: 197911
|
|
|
|
|
|
| |
but silently ignored. Most of this feature was already reverted in June 2012 (r159016), this just cleans up the pieces left over.
llvm-svn: 197866
|
|
|
|
|
|
| |
handler. This removes a silent dropping of the attributes when they are duplicated on a Decl.
llvm-svn: 197864
|
|
|
|
| |
llvm-svn: 197730
|
|
|
|
|
|
| |
is unused.
llvm-svn: 197729
|
|
|
|
|
|
| |
change intended -- this only replaces Boolean uses of getAttr.
llvm-svn: 197648
|
|
|
|
|
|
| |
Since there were no test cases for the attribute, some have been added. This promptly demonstrated a bug with the semantic handling, which is also fixed.
llvm-svn: 197637
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'deprecated'.
Fixes <rdar://problem/15584219> and <rdar://problem/12241361>.
This change looks large, but all it does is reuse and consolidate
the delayed diagnostic logic for deprecation warnings with unavailability
warnings. By doing so, it showed various inconsistencies between the
diagnostics, which were close, but not consistent. It also revealed
some missing "note:"'s in the deprecated diagnostics that were showing
up in the unavailable diagnostics, etc.
This change also changes the wording of the core deprecation diagnostics.
Instead of saying "function has been explicitly marked deprecated"
we now saw "'X' has been been explicitly marked deprecated". It
turns out providing a bit more context is useful, and often we
got the actual term wrong or it was not very precise
(e.g., "function" instead of "destructor"). By just saying the name
of the thing that is deprecated/deleted/unavailable we define
this issue away. This diagnostic can likely be further wordsmithed
to be shorter.
llvm-svn: 197627
|
|
|
|
|
|
|
|
| |
are used on non-kernel functions.
Reviewed by Aaron over IRC!
llvm-svn: 197243
|
|
|
|
|
|
| |
more consistent with other attributes.
llvm-svn: 197104
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'objc_protocol_requires_explicit_implementation'.
That's a mouthful, and not necessarily the final name. This also
reflects a semantic change where this attribute is now on the
protocol itself instead of a class. This attribute will require
that a protocol, when adopted by a class, is explicitly implemented
by the class itself (instead of walking the super class chain).
Note that this attribute is not "done". This should be considered
a WIP.
llvm-svn: 196955
|
|
|
|
|
|
|
|
| |
objc_designated_initializer
attribute is acceptable.
llvm-svn: 196644
|
|
|
|
|
|
| |
Microsoft extensions we do not currently support. Note that __w64 has been deprecated in MSVC since 2008.
llvm-svn: 196592
|
|
|
|
|
|
|
|
| |
which specifies couple of (optional) method selectors
for bridging a CFobject to or from an ObjectiveC
object. This is wip. // rdsr://15499111
llvm-svn: 196408
|
|
|
|
|
|
|
|
|
|
| |
designated initializers of an interface.
If the interface declaration does not have methods marked as designated
initializers then the interface inherits the designated initializers of
its super class.
llvm-svn: 196315
|
|
|
|
|
|
| |
It only applies to methods of init family in an interface declaration.
llvm-svn: 196314
|
|
|
|
|
|
| |
reduces the amount of duplicate code in the handler. No functional change intended.
llvm-svn: 196165
|
|
|
|
|
|
| |
attribute kind test were superfluous. No functional change intended.
llvm-svn: 196162
|
|
|
|
|
|
| |
attribute arguments (the common attribute handler already does this). Switching to use the simple attribute handler. No functional change intended.
llvm-svn: 196155
|
|
|
|
|
|
| |
options to test in tablegen.
llvm-svn: 196138
|
|
|
|
|
|
| |
cf_audited_transfer and cf_unknown_transfer attributes into separate helper methods for simplicity. No functional changes intended.
llvm-svn: 196126
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
__w64 specifically. Renamed and removed some unused code. No functional change intended.
llvm-svn: 196116
|
|
|
|
| |
llvm-svn: 196110
|