__has_attribute and pragmas
richard at metafoo.co.uk
Thu Nov 20 16:22:40 PST 2014
On Thu, Nov 20, 2014 at 3:48 PM, Aaron Ballman <aaron at aaronballman.com>
> On Thu, Nov 20, 2014 at 6:27 PM, Richard Smith <richard at metafoo.co.uk>
> > On Thu, Nov 20, 2014 at 1:38 PM, Aaron Ballman <aaron at aaronballman.com>
> > wrote:
> >> The __has_attribute implementation does not pay attention to the
> >> syntax supported by attributes -- instead, it looks to see whether an
> >> attribute is generally known with that spelling. Since pragmas can now
> >> be spelled as attributes, this means __has_attribute(loop) returns
> >> true because of the #pragma loop functionality. Same for unroll.
> >> Should __has_attribute ignore attributes spelled with a #pragma
> > I would go further: __has_attribute should probably only look for
> > attributes. We have __has_cpp_attribute for C++-syntax attributes now,
> and I
> > don't think anyone is (yet) using this for __declspec, so now seems like
> > good time to make this change.
> A long, long while back, we discussed having a way to determine
> attributes by syntax, because that's sometimes important, as well as a
> general query mechanism.
> How about adding:
> and leaving __has_attribute generic across syntaxes?
> This also reduces the chances of breaking code by allowing the
> __has_attribute syntax to continue to work as it always has.
Back when we only had GNU attributes, that's all it detected. I'm not
convinced that people are actually using it for anything else, and I think
it would be surprising if it said an attribute was supported but that
attribute didn't work with GNU syntax. A generic-across-syntaxes
__has_attribute is basically useless.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-commits