On Jun 27, 2009, at 8:04 PM, Eli Friedman wrote: > On Thu, Jun 25, 2009 at 11:32 PM, Nate Begeman<[email protected]> > wrote: >> +static void HandleReqdWorkGroupSize(Decl *D, const AttributeList >> &Attr, >> + Sema &S) { >> + // Attribute has 3 arguments. >> + if (Attr.getNumArgs() != 3) { >> + S.Diag(Attr.getLoc(), >> diag::err_attribute_wrong_number_arguments) << 1; >> + return; >> + } >> + >> + unsigned WGSize[3]; >> + for (unsigned i = 0; i < 3; ++i) { >> + Expr *E = static_cast<Expr *>(Attr.getArg(i)); >> + llvm::APSInt ArgNum(32); >> + if (!E->isIntegerConstantExpr(ArgNum, S.Context)) { >> + S.Diag(Attr.getLoc(), diag::err_attribute_argument_not_int) >> + << "reqd_work_group_size" << E->getSourceRange(); >> + return; >> + } >> + WGSize[i] = (unsigned) ArgNum.getZExtValue(); >> + } >> + D->addAttr(S.Context, >> + ::new (S.Context) ReqdWorkGroupSizeAttr(WGSize[0], >> WGSize[1], >> + WGSize[2])); >> +} > > Shouldn't there be some sort of check that this attribute isn't > applied to anything other than an __kernel?
That would require an ordering of attributes not required by the spec. Currently it's just up to codegen to do something with this attribute other than ignore it. Nate _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
