Skip to content

Commit

Permalink
Revise RenderScript attribute declaration
Browse files Browse the repository at this point in the history
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

llvm-svn: 272438
  • Loading branch information
pirama-arumuga-nainar committed Jun 10, 2016
1 parent 97609bb commit e5d2d71
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 17 deletions.
4 changes: 3 additions & 1 deletion clang/include/clang/Basic/Attr.td
Expand Up @@ -240,6 +240,7 @@ def Borland : LangOpt<"Borland">;
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
Expand Down Expand Up @@ -728,10 +729,11 @@ def OpenCLNoSVM : Attr {
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 {
Expand Down
15 changes: 2 additions & 13 deletions clang/lib/Sema/SemaDeclAttr.cpp
Expand Up @@ -4185,17 +4185,6 @@ static void handleTypeTagForDatatypeAttr(Sema &S, Decl *D,
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.
//===----------------------------------------------------------------------===//
Expand Down Expand Up @@ -5925,8 +5914,8 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D,
handleTypeTagForDatatypeAttr(S, D, Attr);
break;

case AttributeList::AT_Kernel:
handleKernelAttr(S, D, Attr);
case AttributeList::AT_RenderScriptKernel:
handleSimpleAttribute<RenderScriptKernelAttr>(S, D, Attr);
break;
}
}
Expand Down
10 changes: 7 additions & 3 deletions clang/test/Sema/renderscript.rs
Expand Up @@ -2,11 +2,15 @@
// 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__
Expand Down

0 comments on commit e5d2d71

Please sign in to comment.