summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprObjC.cpp
diff options
context:
space:
mode:
authorAlex Denisov <1101.debian@gmail.com>2015-02-16 16:17:05 +0000
committerAlex Denisov <1101.debian@gmail.com>2015-02-16 16:17:05 +0000
commite36748a8eb65b7ee2b82b873d5e80f9c4e4093eb (patch)
tree17fe01811d7a0e51d541665a2ef06bd40b9c9168 /clang/lib/Sema/SemaExprObjC.cpp
parent235d1f99aa5c407ee59b9eb8c6ea936354342b59 (diff)
downloadbcm5719-llvm-e36748a8eb65b7ee2b82b873d5e80f9c4e4093eb.tar.gz
bcm5719-llvm-e36748a8eb65b7ee2b82b873d5e80f9c4e4093eb.zip
Fix crash when clang tries to build NSNumber literal after forward declaration
Bug report: http://llvm.org/bugs/show_bug.cgi?id=22561 Clang tries to create ObjCBoxedExpression of type 'NSNumber' when 'NSNumber' has only forward declaration, this cause a crash later, when 'Sema' refers to a nil QualType of the whole expression. Please, refer to the bug report for the better explanation. llvm-svn: 229402
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
-rw-r--r--clang/lib/Sema/SemaExprObjC.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp
index 8bdd18ea20e..cb1f21acac8 100644
--- a/clang/lib/Sema/SemaExprObjC.cpp
+++ b/clang/lib/Sema/SemaExprObjC.cpp
@@ -218,7 +218,9 @@ static ObjCMethodDecl *getNSNumberFactoryMethod(Sema &S, SourceLocation Loc,
S.Diag(Loc, diag::err_undeclared_nsnumber);
return nullptr;
}
-
+ }
+
+ if (S.NSNumberPointer.isNull()) {
// generate the pointer to NSNumber type.
QualType NSNumberObject = CX.getObjCInterfaceType(S.NSNumberDecl);
S.NSNumberPointer = CX.getObjCObjectPointerType(NSNumberObject);
OpenPOWER on IntegriCloud