aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDeclAttr.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-01-08 21:30:32 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-01-08 21:30:32 +0000
commit8c4222adbc0fd22928e751be6a75328fc9283a72 (patch)
treeb75dee33f5dfd507889f9142f80d37b362cab2d3 /lib/Sema/SemaDeclAttr.cpp
parent0777cf5fcb8ca53bdc7e6455e9068742fbcc14db (diff)
Don't crash when trying to apply the availability attribute to a block.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171899 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclAttr.cpp')
-rw-r--r--lib/Sema/SemaDeclAttr.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp
index b62a4e86b1..75268b8cc5 100644
--- a/lib/Sema/SemaDeclAttr.cpp
+++ b/lib/Sema/SemaDeclAttr.cpp
@@ -2131,6 +2131,12 @@ static void handleAvailabilityAttr(Sema &S, Decl *D,
S.Diag(PlatformLoc, diag::warn_availability_unknown_platform)
<< Platform;
+ NamedDecl *ND = dyn_cast<NamedDecl>(D);
+ if (!ND) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName();
+ return;
+ }
+
AvailabilityChange Introduced = Attr.getAvailabilityIntroduced();
AvailabilityChange Deprecated = Attr.getAvailabilityDeprecated();
AvailabilityChange Obsoleted = Attr.getAvailabilityObsoleted();
@@ -2149,7 +2155,6 @@ static void handleAvailabilityAttr(Sema &S, Decl *D,
IsUnavailable, Str);
if (NewAttr) {
D->addAttr(NewAttr);
- NamedDecl *ND = cast<NamedDecl>(D);
ND->ClearLVCache();
}
}