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
Aaron Ballman
6f9165a478
Refactored semantic handlers that would unilaterally apply the attribute to a Decl so they all go through a common interface. No functional change intended.
...
llvm-svn: 195848
2013-11-27 15:24:06 +00:00
Alexander Kornienko
b4586f4217
Trivial fix: remove unused variable
...
llvm-svn: 195846
2013-11-27 15:02:03 +00:00
Aaron Ballman
74eeeae3d3
Laying the basic groundwork for table generating the diagnostics for attribute subjects. This makes some modifications to the way subjects are listed in Attr.td, and updates the attr emitter to handle the new constructs.
...
I have disabled some attribute subject lines on purpose in Attr.td;
this part is a WIP with the goal being to restore those subjects
incrementally. By commenting them out, it leaves the original behavior
the same as before for those attributes and so those are not
functionality changes.
llvm-svn: 195841
2013-11-27 13:27:02 +00:00
Richard Smith
852e9ce3dd
Remove 'DistinctSpellings' support from Attr.td and change its only user to
...
look at the attribute spelling instead. The 'ownership_*' attributes should
probably be split into separate *Attr classes, but that's more than I wanted to
do here.
llvm-svn: 195805
2013-11-27 01:46:48 +00:00
Aaron Ballman
b0dc07419b
Replacing a custom diagnostic with a more standard one. No functional change intended.
...
llvm-svn: 195770
2013-11-26 16:14:15 +00:00
Aaron Ballman
90f8c6fb31
Making type_tag_for_datatype consistent with its declared subject from Attr.td. Also updated the related testcase.
...
Reviewed by Dmitri Gribenko.
llvm-svn: 195675
2013-11-25 18:50:49 +00:00
NAKAMURA Takumi
01d27f9705
SemaDeclAttr.cpp: Try to fix a warning [-Wunnamed-type-template-args]
...
llvm-svn: 195589
2013-11-25 00:52:29 +00:00
Aaron Ballman
3db89662c3
Switching the common attribute over to using the generic diagnostic, and removing the now-unused diagnostic. Updates a test case.
...
llvm-svn: 195581
2013-11-24 21:48:06 +00:00
Aaron Ballman
df8fe4c91c
__declspec(uuid) is only supported for C++ code according to MSDN (as well as behaviorally in MSVC). This adds a generic diagnostic that we use for uuid, and can use for some other attributes as well, and adds a testcase.
...
llvm-svn: 195580
2013-11-24 21:35:16 +00:00
Aaron Ballman
60e705e648
__declspec(uuid) is only allowed on a class according to MSDN; this makes the semantic checking consistent with what the attribute specifies in Attr.td. Also adds a test case.
...
llvm-svn: 195579
2013-11-24 20:58:02 +00:00
Aaron Ballman
f361453519
Making some attribute diagnostics more consistent. Removes a newly-unused diagnostic.
...
Reviewed by Fariborz Jahanian
llvm-svn: 195578
2013-11-24 20:36:50 +00:00