majnemer added inline comments.
================
Comment at: lib/Parse/ParseDecl.cpp:2989
+
+ Diag(Loc, diag::err_ms_attributes_not_enabled);
+ continue;
----------------
aaron.ballman wrote:
> compnerd wrote:
> > aaron.ballman wrote:
> > > compnerd wrote:
> > > > I think that we want to emit the diagnostic even if there is no
> > > > parenthesis as `__declspec` is a reserved identifier, and we would
> > > > normally diagnose the bad `__declspec` (expected '(' after
> > > > '__declspec').
> > > Yes, but it could also lead to a rejecting code that we used to accept
> > > and properly handle when __declspec is an identifier rather than a
> > > keyword. e.g.,
> > > ```
> > > struct __declspec {};
> > >
> > > __declspec some_func(void);
> > > ```
> > > By looking for the paren, we run less risk of breaking working code, even
> > > if that code abuses the implementation namespace (after all, __declspec
> > > it not a keyword in this scenario).
> > But we would reject that code under `-fdeclspec` anyways. I think having
> > the code be more portable is a bit nicer.
> After discussing in IRC, I decided that I agree with @compnerd on this and
> have changed the patch accordingly.
What if somebody wants to use __declspec and are using the compiler in a
freestanding mode? Also, we aren't the only member of the implementor's
namespace.
https://reviews.llvm.org/D29868
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits