Would this make a suitable test case? typedef int i16_1 __attribute((mode(HI))); typedef i16_1 i16_redecl;
int i16_redecl_test[sizeof(i16_redecl) == 4 ? 1 : -1]; Added to Sema\attr-mode.c ~Aaron On Wed, Aug 28, 2013 at 7:19 PM, Richard Smith <[email protected]> wrote: > Can you add test cases here (at least for the 'mode' attribute)? > > > On Wed, Aug 28, 2013 at 4:13 PM, Aaron Ballman <[email protected]> > wrote: >> >> Author: aaronballman >> Date: Wed Aug 28 18:13:26 2013 >> New Revision: 189532 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=189532&view=rev >> Log: >> Mode is now handled as a non-inheritable attribute, and CUDADevice & >> CUDAHost are now handled as inheritable attributes. In all three cases, >> this makes the processing behavior more consistent with the declared >> behavior in Attr.td. >> >> Modified: >> cfe/trunk/lib/Sema/SemaDeclAttr.cpp >> >> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=189532&r1=189531&r2=189532&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Wed Aug 28 18:13:26 2013 >> @@ -4678,9 +4678,8 @@ static void handleSelectAnyAttr(Sema &S, >> static void ProcessNonInheritableDeclAttr(Sema &S, Scope *scope, Decl *D, >> const AttributeList &Attr) { >> switch (Attr.getKind()) { >> - case AttributeList::AT_CUDADevice: handleDeviceAttr (S, D, Attr); >> break; >> - case AttributeList::AT_CUDAHost: handleHostAttr (S, D, Attr); >> break; >> case AttributeList::AT_Overloadable:handleOverloadableAttr(S, D, Attr); >> break; >> + case AttributeList::AT_Mode: handleModeAttr (S, D, Attr); >> break; >> default: >> break; >> } >> @@ -4705,8 +4704,7 @@ static void ProcessInheritableDeclAttr(S >> // Ignore these, these are type attributes, handled by >> // ProcessTypeAttributes. >> break; >> - case AttributeList::AT_CUDADevice: >> - case AttributeList::AT_CUDAHost: >> + case AttributeList::AT_Mode: >> case AttributeList::AT_Overloadable: >> // Ignore, this is a non-inheritable attribute, handled >> // by ProcessNonInheritableDeclAttr. >> @@ -4743,11 +4741,12 @@ static void ProcessInheritableDeclAttr(S >> case AttributeList::AT_Format: handleFormatAttr (S, D, Attr); >> break; >> case AttributeList::AT_FormatArg: handleFormatArgAttr (S, D, Attr); >> break; >> case AttributeList::AT_CUDAGlobal: handleGlobalAttr (S, D, Attr); >> break; >> + case AttributeList::AT_CUDADevice: handleDeviceAttr (S, D, Attr); >> break; >> + case AttributeList::AT_CUDAHost: handleHostAttr (S, D, Attr); >> break; >> case AttributeList::AT_GNUInline: handleGNUInlineAttr (S, D, Attr); >> break; >> case AttributeList::AT_CUDALaunchBounds: >> handleLaunchBoundsAttr(S, D, Attr); >> break; >> - case AttributeList::AT_Mode: handleModeAttr (S, D, Attr); >> break; >> case AttributeList::AT_Malloc: handleMallocAttr (S, D, Attr); >> break; >> case AttributeList::AT_MayAlias: handleMayAliasAttr (S, D, Attr); >> break; >> case AttributeList::AT_NoCommon: handleNoCommonAttr (S, D, Attr); >> break; >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
