Anastasia added inline comments. ================ Comment at: test/SemaOpenCL/nosvm.cl:9 @@ +8,3 @@ +#else +void f(__attribute__((nosvm)) int* a); // expected-warning {{'nosvm' attribute ignored}} +#endif ---------------- yaxunl wrote: > Anastasia wrote: > > yaxunl wrote: > > > yaxunl wrote: > > > > Anastasia wrote: > > > > > It seems like it makes nosvm available for C and earlier standards of > > > > > OpenCL too? > > > > > > > > > > Doesn't feel right. :( > > > > Before my change, the original behavior of Clang is to emits a warning > > > > for any unknown GNU attribute, e.g. > > > > unknown 'nosvm' attribute is ignored. > > > > > > > > Should I just emit the same warning if the language is not OpenCL or if > > > > the language is OpenCL but the version is not 2.0? Or I should emit an > > > > error if the language is OpenCL but the version is not 2.0? > > > Also, ``'nosvm' attribute ignored`` is the default warning msg used in > > > tablegen when LangOpt<"OpenCL"> is used. The following code is generated > > > by tablegen: > > > > > > static bool checkOpenCLLangOpts(Sema &S, const AttributeList &Attr) { > > > if (S.LangOpts.OpenCL) > > > return true; > > > > > > S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); > > > return false; > > > } > > > > > > Basically, if an attrib is defined for a specific language by using > > > LangOpt<> in Attr.td, when this attr is used in other languages, the > > > original behavior of Clang is to emit a warning like: > > > > > > 'nosvm' attribute ignored > > > > > > Do we want to fix this? Or simply don't use LangOpt<> for this attribute. > > I am a bit confused now. So what diagnostic would Clang give if we don't > > use LanOpt<>? Is it the same as if with LangOpt<>? Is there anything we can > > do about CL version as well? > > > > I don't feel like we should modify default Clang behavior wrt attributes a > > lot. Let's try to find the best way to use what we already have. > For non-OpenCL programs, > > If we don't use LangOpt, Clang will emit warning > > unknown 'nosvm' attribute ignored > > If we use LangOpt, Clang will emit warning > > 'nosvm' attribute ignored > > If we don't want to change Clang default behavior but also don't like the > second default warning, we should not use LangOpt. > > I can emit a warning for OpenCL program which version is not 2.0: > > 'nosvm' attribute is valid only for OpenCL 2.0 > > and emit a warning for non-OpenCL programs > > unknown 'nosvm' attribute is ignored Yes, seems like it's best not to use LangOpt actually.
So if the change is not large I would prefer the second option you proposed! Repository: rL LLVM http://reviews.llvm.org/D17861 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits