Summary:
Address post-patch comments to r272342.
- Rename the 'kernel' attribute's name
- Idiomatically restrict the attribute to the 'RenderScript' LangOpt.
Reviewers: aaron.ballman, rsmith
Subscribers: cfe-commits, srhines
Differential Revision: http://reviews.llvm.org/D21240
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272438
91177308-0d34-0410-b5e6-
96231b3b80d8
def CUDA : LangOpt<"CUDA">;
def COnly : LangOpt<"CPlusPlus", 1>;
def OpenCL : LangOpt<"OpenCL">;
+def RenderScript : LangOpt<"RenderScript">;
// Defines targets for target-specific attributes. The list of strings should
// specify architectures for which the target applies, based off the ArchType
let ASTNode = 0;
}
-def Kernel : Attr {
+def RenderScriptKernel : Attr {
let Spellings = [GNU<"kernel">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let LangOpts = [RenderScript];
}
def Deprecated : InheritableAttr {
Attr.getAttributeSpellingListIndex()));
}
-static void handleKernelAttr(Sema &S, Decl *D, const AttributeList &Attr) {
- if (S.LangOpts.RenderScript) {
- D->addAttr(::new (S.Context)
- KernelAttr(Attr.getRange(), S.Context,
- Attr.getAttributeSpellingListIndex()));
- } else {
- S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "kernel";
- }
-}
-
-
//===----------------------------------------------------------------------===//
// Checker-specific attribute handlers.
//===----------------------------------------------------------------------===//
handleTypeTagForDatatypeAttr(S, D, Attr);
break;
- case AttributeList::AT_Kernel:
- handleKernelAttr(S, D, Attr);
+ case AttributeList::AT_RenderScriptKernel:
+ handleSimpleAttribute<RenderScriptKernelAttr>(S, D, Attr);
break;
}
}
// RUN: %clang_cc1 -fsyntax-only -verify -x c %s
#ifndef __RENDERSCRIPT__
-// expected-warning@+2 {{kernel attribute ignored}}
+// expected-warning@+2 {{'kernel' attribute ignored}}
#endif
-void __attribute__((kernel)) kernel();
+void __attribute__((kernel)) kernel() {}
-// expected-warning@+1 {{'kernel' attribute only applies to functions}}
+#ifndef __RENDERSCRIPT__
+// expected-warning@+4 {{'kernel' attribute ignored}}
+#else
+// expected-warning@+2 {{'kernel' attribute only applies to functions}}
+#endif
int __attribute__((kernel)) global;
#ifndef __RENDERSCRIPT__