From 47611c88fb0446673c6e590ab461934054be290a Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Thu, 23 Feb 2012 01:19:31 +0000 Subject: [PATCH] Turned on support for __declspec(deprecated) in MS compatibility mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151225 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaDeclAttr.cpp | 3 ++- test/Sema/MicrosoftExtensions.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index f0830b8861..daf225978e 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -3465,7 +3465,8 @@ static void handleObjCPreciseLifetimeAttr(Sema &S, Decl *D, static bool isKnownDeclSpecAttr(const AttributeList &Attr) { return Attr.getKind() == AttributeList::AT_dllimport || Attr.getKind() == AttributeList::AT_dllexport || - Attr.getKind() == AttributeList::AT_uuid; + Attr.getKind() == AttributeList::AT_uuid || + Attr.getKind() == AttributeList::AT_deprecated; } //===----------------------------------------------------------------------===// diff --git a/test/Sema/MicrosoftExtensions.c b/test/Sema/MicrosoftExtensions.c index a4a8acd78e..fb0c6bde9a 100644 --- a/test/Sema/MicrosoftExtensions.c +++ b/test/Sema/MicrosoftExtensions.c @@ -86,3 +86,17 @@ typedef struct { typedef struct { AA; // expected-warning {{anonymous structs are a Microsoft extension}} } BB; + +__declspec(deprecated("This is deprecated")) enum DE1 { one, two } e1; +struct __declspec(deprecated) DS1 { int i; float f; }; + +#define MY_TEXT "This is also deprecated" +__declspec(deprecated(MY_TEXT)) void Dfunc1( void ) {} + +void test( void ) { + e1 = one; // expected-warning {{'e1' is deprecated: This is deprecated}} + struct DS1 s = { 0 }; // expected-warning {{'DS1' is deprecated}} + Dfunc1(); // expected-warning {{'Dfunc1' is deprecated: This is also deprecated}} + + enum DE1 no; // no warning because E1 is not deprecated +} -- 2.40.0