From e08e25e23923d2f73c41f7e87e5eb3c5228d67ca Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Mon, 13 Jan 2014 21:32:48 +0000 Subject: [PATCH] Updating the attribute declarations to have the correct syntaxes. This means giving a __declspec spelling to: deprecated, naked, noinline, noreturn, and nothrow. uuid has no GNU spelling, so it was switched to __declspec. dllexport and dllimport both are now supported with GNU spellings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199142 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/Attr.td | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/include/clang/Basic/Attr.td b/include/clang/Basic/Attr.td index 37244dcba7..886b239385 100644 --- a/include/clang/Basic/Attr.td +++ b/include/clang/Basic/Attr.td @@ -459,7 +459,7 @@ def OpenCLImageAccess : Attr { } def Deprecated : InheritableAttr { - let Spellings = [GNU<"deprecated">, + let Spellings = [GNU<"deprecated">, Declspec<"deprecated">, CXX11<"gnu", "deprecated">, CXX11<"","deprecated">]; let Args = [StringArgument<"Message", 1>]; } @@ -589,7 +589,7 @@ def Mode : Attr { } def Naked : InheritableAttr { - let Spellings = [GNU<"naked">, CXX11<"gnu", "naked">]; + let Spellings = [GNU<"naked">, CXX11<"gnu", "naked">, Declspec<"naked">]; let Subjects = SubjectList<[Function]>; } @@ -618,7 +618,8 @@ def NoDebug : InheritableAttr { } def NoInline : InheritableAttr { - let Spellings = [GNU<"noinline">, CXX11<"gnu", "noinline">]; + let Spellings = [GNU<"noinline">, CXX11<"gnu", "noinline">, + Declspec<"noinline">]; let Subjects = SubjectList<[Function]>; } @@ -641,7 +642,8 @@ def NonNull : InheritableAttr { } def NoReturn : InheritableAttr { - let Spellings = [GNU<"noreturn">, CXX11<"gnu", "noreturn">]; + let Spellings = [GNU<"noreturn">, CXX11<"gnu", "noreturn">, + Declspec<"noreturn">]; // FIXME: Does GCC allow this on the function instead? } @@ -652,7 +654,8 @@ def NoInstrumentFunction : InheritableAttr { } def NoThrow : InheritableAttr { - let Spellings = [GNU<"nothrow">, CXX11<"gnu", "nothrow">]; + let Spellings = [GNU<"nothrow">, CXX11<"gnu", "nothrow">, + Declspec<"nothrow">]; } def ObjCBridge : InheritableAttr { @@ -908,7 +911,7 @@ def Used : InheritableAttr { } def Uuid : InheritableAttr { - let Spellings = [GNU<"uuid">]; + let Spellings = [Declspec<"uuid">]; let Args = [StringArgument<"Guid">]; // let Subjects = SubjectList<[CXXRecord]>; let LangOpts = [MicrosoftExt, Borland]; @@ -1258,12 +1261,14 @@ def MsStruct : InheritableAttr { } def DLLExport : InheritableAttr, TargetSpecificAttr { - let Spellings = [Declspec<"dllexport">]; + let Spellings = [Declspec<"dllexport">, GNU<"dllexport">, + CXX11<"gnu", "dllexport">]; let Subjects = SubjectList<[Function, Var]>; } def DLLImport : InheritableAttr, TargetSpecificAttr { - let Spellings = [Declspec<"dllimport">]; + let Spellings = [Declspec<"dllimport">, GNU<"dllimport">, + CXX11<"gnu", "dllimport">]; // Technically, the subjects for DllImport are Function and Var, but there is // custom semantic handling required when MicrosoftExt is true. } -- 2.40.0