Aaron Ballman
ab7691c4ce
Removing the notion of TargetAttributesSema and replacing it with one where 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
2014-01-09 22:48:32 +00:00
Aaron Ballman
b8c0adeac8
Treating the RegParmAttr as a TypeAttr because that is what it is.
...
Patch reviewed by Rafael Espindola.
llvm-svn: 198765
2014-01-08 13:23:01 +00:00
Aaron Ballman
2cfbc00506
Simplifying the mutual exclusion check now that the diagnostics engine knows how to handle Attr objects directly. Updates an associated test case due to the attribute name being properly quoted again.
...
llvm-svn: 198424
2014-01-03 16:23:46 +00:00
Aaron Ballman
3d216a579c
Removed an unnecessary %select from the alignas diagnostics. The attribute already knows how it was spelled.
...
llvm-svn: 198375
2014-01-02 23:39:11 +00:00
Aaron Ballman
1da282ae2d
Removing some more unnecessary manual quotes from attribute diagnostics. Updated the associated testcase because QualType pretty printing was an improvement.
...
llvm-svn: 198372
2014-01-02 23:15:58 +00:00
Aaron Ballman
9f6fec4419
Removing some more unnecessary manual quotes from attribute diagnostics.
...
llvm-svn: 198371
2014-01-02 23:02:01 +00:00
Aaron Ballman
05e420abad
Updated the wording of two attribute-related diagnostics so that they print the offending attribute name. Also updates the associated test cases.
...
llvm-svn: 198355
2014-01-02 21:26:14 +00:00
Aaron Ballman
2dfb03f362
Removed a string literal for a diagnostic, and updated the diagnostic to not manually quote. No functional changes intended.
...
llvm-svn: 198076
2013-12-27 16:30:46 +00:00
Aaron Ballman
3e424b5070
Teach the diagnostics engine about the Attr type to make reporting on 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
2013-12-26 18:30:57 +00:00
Aaron Ballman
88fe322053
Removed a string literal for an attribute name, which means the attribute 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
2013-12-26 17:30:44 +00:00
Aaron Ballman
cedaaea691
This diagnostic did not accept arguments, and did not have any test 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
2013-12-26 17:07:49 +00:00
Aaron Ballman
faed0fa3d7
Simplifying some diagnostics so that they don't need to work with StringRefs. No functional changes intended.
...
llvm-svn: 198051
2013-12-26 16:30:30 +00:00
Aaron Ballman
190bad459c
Getting rid of a string literal in favor of the generalized diagnostic.
...
llvm-svn: 198050
2013-12-26 16:13:50 +00:00
Aaron Ballman
6828945dd2
No need for the manual quotes and extra getName() call. No functional changes intended.
...
llvm-svn: 198047
2013-12-26 15:06:01 +00:00
Aaron Ballman
553e68118f
Removing some unneeded code, and a diagnostic that was obsoleted. The type has already been determined to be a ValueDecl by virtue of the attribute subjects.
...
Added some test case coverage as well.
llvm-svn: 198046
2013-12-26 14:54:11 +00:00
Aaron Ballman
0390908588
Consolidating some mode attribute diagnostics. No functional changes intended.
...
llvm-svn: 197911
2013-12-23 15:23:11 +00:00
Aaron Ballman
888e935978
Removing the alloc_size attribute. The attribute was semantically handled, 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
2013-12-21 17:15:13 +00:00
Aaron Ballman
bf7b1ee385
The const and nothrow attributes can be handled by the simple attribute handler. This removes a silent dropping of the attributes when they are duplicated on a Decl.
...
llvm-svn: 197864
2013-12-21 16:49:29 +00:00
Ted Kremenek
ec690e960e
Remove dead code identified by Aaron Ballman.
...
llvm-svn: 197730
2013-12-19 22:23:12 +00:00
Aaron Ballman
37c5f5da32
After discussing with John McCall, removing the ns_bridged attribute as it is unused.
...
llvm-svn: 197729
2013-12-19 22:12:51 +00:00
Aaron Ballman
9ead1243a5
Replacing calls to getAttr with calls to hasAttr for clarity. No functional change intended -- this only replaces Boolean uses of getAttr.
...
llvm-svn: 197648
2013-12-19 02:39:40 +00:00
Aaron Ballman
66039937e8
Added a comment about the launch_bounds attribute's AST node being required. 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
2013-12-19 00:41:31 +00:00
Aaron Ballman
8edb5c2081
Refactor the Microsoft inheritance attribute handling so that it no longer 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
2013-12-18 23:44:18 +00:00
Ted Kremenek
b79ee57080
Implemented delayed processing of 'unavailable' checking, just like with '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
2013-12-18 23:30:06 +00:00
Joey Gouly
2cd9db1cef
[OpenCL] Produce an error when the work group and vec type hint attributes
...
are used on non-kernel functions.
Reviewed by Aaron over IRC!
llvm-svn: 197243
2013-12-13 16:15:28 +00:00
Aaron Ballman
75a1729c4b
Added a Subjects clause to the section attribute and made its diagnostics more consistent with other attributes.
...
llvm-svn: 197104
2013-12-12 01:34:39 +00:00
Ted Kremenek
f41cf7f10f
Rename attribute 'objc_suppress_protocol_methods' to '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
2013-12-10 19:43:48 +00:00
Argyrios Kyrtzidis
e818681c88
Add a SubsetSubject in Attr.td to automate checking of where the objc_designated_initializer
...
attribute is acceptable.
llvm-svn: 196644
2013-12-07 06:08:04 +00:00
Aaron Ballman
ba0aea16e1
Turning the __w64 attribute into an ignored attribute to match other Microsoft extensions we do not currently support. Note that __w64 has been deprecated in MSVC since 2008.
...
llvm-svn: 196592
2013-12-06 18:56:03 +00:00
Fariborz Jahanian
1a2519a7e9
ObjectiveC - Introducing objc_bridge_related attribute
...
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
2013-12-04 20:32:50 +00:00
Argyrios Kyrtzidis
9ed9e5f31c
[objc] Introduce ObjCInterfaceDecl::getDesignatedInitializers() to get the
...
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
2013-12-03 21:11:30 +00:00
Argyrios Kyrtzidis
d1438b446e
[objc] Introduce attribute 'objc_designated_initializer'.
...
It only applies to methods of init family in an interface declaration.
llvm-svn: 196314
2013-12-03 21:11:25 +00:00
Aaron Ballman
1d0d2a48e7
Refactored the work group-related attributes to use a template, which reduces the amount of duplicate code in the handler. No functional change intended.
...
llvm-svn: 196165
2013-12-02 22:38:33 +00:00
Aaron Ballman
a9e0540c78
Simplifying a test for duplicate vec_type_hint attributes. The assert and attribute kind test were superfluous. No functional change intended.
...
llvm-svn: 196162
2013-12-02 22:16:55 +00:00
Aaron Ballman
f79ee2756d
The CUDA device attribute doesn't need custom logic to check the number of attribute arguments (the common attribute handler already does this). Switching to use the simple attribute handler. No functional change intended.
...
llvm-svn: 196155
2013-12-02 21:09:08 +00:00
Aaron Ballman
3aff633590
Automate attribute language option checking by specifying the list of options to test in tablegen.
...
llvm-svn: 196138
2013-12-02 19:30:36 +00:00
Aaron Ballman
fb76304f74
Factored attribute mutual exclusion code into a helper function; split the cf_audited_transfer and cf_unknown_transfer attributes into separate helper methods for simplicity. No functional changes intended.
...
llvm-svn: 196126
2013-12-02 18:05:46 +00:00
Aaron Ballman
604dfec8dc
Re-enabled support for the Subjects for the weak attribute. This changes the 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
2013-12-02 17:07:07 +00:00
Aaron Ballman
5010a76fe2
The __w64 attribute handler was more generically named, but only applied to __w64 specifically. Renamed and removed some unused code. No functional change intended.
...
llvm-svn: 196116
2013-12-02 16:17:55 +00:00
Aaron Ballman
7a47bb0397
The FieldDecl is already covered by the ValueDecl case, so it is being removed.
...
llvm-svn: 196110
2013-12-02 15:31:50 +00:00
Aaron Ballman
9beb517307
Switching the ibaction attribute handler to the generalized handler. No functional change intended.
...
llvm-svn: 196107
2013-12-02 15:13:14 +00:00
Aaron Ballman
e61b8b816a
Replacing custom subject application logic with table-generated logic. Affects: guarded_var, pt_guarded_var, guarded_by, pt_guarded_by, acquired_after and acquired_before. No functional change intended.
...
llvm-svn: 196105
2013-12-02 15:02:49 +00:00
Aaron Ballman
5b0481a398
Refactored the tls_model attribute to use a custom subset subject. No functional change intended.
...
llvm-svn: 195964
2013-11-29 16:20:30 +00:00
Aaron Ballman
f7cd09a047
Using a custom subject to reenable the Subjects line for the ns_bridged attribute. No functional change intended.
...
llvm-svn: 195963
2013-11-29 16:13:12 +00:00
Aaron Ballman
80469038c0
Enables support for custom subject lists for attributes. As a testbed, uses the custom subject for the ibaction attribute.
...
llvm-svn: 195960
2013-11-29 14:57:58 +00:00
Aaron Ballman
57ede3bd80
Converts the lockable attributes to use the simple attribute handler because the semantic checking was already automated.
...
llvm-svn: 195866
2013-11-27 19:35:27 +00:00
Aaron Ballman
17046b8506
Automated checking for C++ when determining what argument to send to the diagnostic for attribute subjects. In turn, this allows the Subjects to be enabled for some more attributes and improves diagnostics. Updated a test case based on the improved diagnostic.
...
llvm-svn: 195864
2013-11-27 19:16:55 +00:00
Aaron Ballman
3a8e2d9136
Adding the Subjects entry back for the noreturn attributes. This caused some test cases to be updated because the original diagnostic was about applying to methods as well as functions, but the semantic checking disallowed methods.
...
llvm-svn: 195862
2013-11-27 18:53:58 +00:00
Aaron Ballman
6a42b5a0c5
Enabling the subject list for the warn_unused attribute, and adding a test case. Previously, would issue a "warning ignored" diagnostic instead of the more specific "only applies to."
...
llvm-svn: 195851
2013-11-27 16:59:17 +00:00
Aaron Ballman
4a611153e1
Adding in the subject for the init_priority attribute.
...
llvm-svn: 195850
2013-11-27 16:34:09 +00:00