Lines Matching refs:Attr

25                                     const AttributeList &Attr, Sema &S) const {
30 const AttributeList &Attr, Sema &S) {
32 if (Attr.getNumArgs() != 1) {
33 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments)
34 << Attr.getName() << 1;
40 Expr *NumParamsExpr = static_cast<Expr *>(Attr.getArg(0));
43 S.Diag(Attr.getLoc(), diag::err_attribute_argument_type)
44 << Attr.getName() << AANT_ArgumentIntegerConstant
51 S.Diag(Attr.getLoc(), diag::err_attribute_argument_out_of_bounds)
57 d->addAttr(::new (S.Context) MSP430InterruptAttr(Attr.getLoc(), S.Context, Num));
58 d->addAttr(::new (S.Context) UsedAttr(Attr.getLoc(), S.Context));
66 const AttributeList &Attr, Sema &S) const {
67 if (Attr.getName()->getName() == "interrupt") {
68 HandleMSP430InterruptAttr(D, Attr, S);
77 const AttributeList& Attr,
80 if (Attr.getNumArgs() != 0) {
81 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments)
82 << Attr.getName() << 0;
99 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
100 << Attr.getName() << /* function */0;
104 D->addAttr(::new (S.Context) X86ForceAlignArgPointerAttr(Attr.getRange(),
131 static void HandleDLLImportAttr(Decl *D, const AttributeList &Attr, Sema &S) {
133 if (Attr.getNumArgs() != 0) {
134 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments)
135 << Attr.getName() << 0;
146 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
147 << Attr.getName() << 2 /*variable and function*/;
154 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "dllimport";
158 unsigned Index = Attr.getAttributeSpellingListIndex();
159 DLLImportAttr *NewAttr = S.mergeDLLImportAttr(D, Attr.getRange(), Index);
178 static void HandleDLLExportAttr(Decl *D, const AttributeList &Attr, Sema &S) {
180 if (Attr.getNumArgs() != 0) {
181 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments)
182 << Attr.getName() << 0;
189 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
190 << Attr.getName() << 2 /*variable and function*/;
198 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "dllexport";
202 unsigned Index = Attr.getAttributeSpellingListIndex();
203 DLLExportAttr *NewAttr = S.mergeDLLExportAttr(D, Attr.getRange(), Index);
213 const AttributeList &Attr, Sema &S) const {
217 switch (Attr.getKind()) {
218 case AttributeList::AT_DLLImport: HandleDLLImportAttr(D, Attr, S);
220 case AttributeList::AT_DLLExport: HandleDLLExportAttr(D, Attr, S);
226 (Attr.getName()->getName() == "force_align_arg_pointer" ||
227 Attr.getName()->getName() == "__force_align_arg_pointer__")) {
228 HandleX86ForceAlignArgPointerAttr(D, Attr, S);
236 static void HandleMips16Attr(Decl *D, const AttributeList &Attr, Sema &S) {
238 if (Attr.hasParameterOrArguments()) {
239 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments)
240 << Attr.getName() << 0;
245 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type)
246 << Attr.getName() << /* function */0;
249 D->addAttr(::new (S.Context) Mips16Attr(Attr.getRange(), S.Context,
250 Attr.getAttributeSpellingListIndex()));
253 static void HandleNoMips16Attr(Decl *D, const AttributeList &Attr, Sema &S) {
255 if (Attr.hasParameterOrArguments()) {
256 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments)
257 << Attr.getName() << 0;
262 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type)
263 << Attr.getName() << /* function */0;
267 NoMips16Attr(Attr.getRange(), S.Context,
268 Attr.getAttributeSpellingListIndex()));
275 bool ProcessDeclAttribute(Scope *scope, Decl *D, const AttributeList &Attr,
277 if (Attr.getName()->getName() == "mips16") {
278 HandleMips16Attr(D, Attr, S);
280 } else if (Attr.getName()->getName() == "nomips16") {
281 HandleNoMips16Attr(D, Attr, S);