]> granicus.if.org Git - clang/commitdiff
Don't crash if the AST doesn't have a sensible ObjC id type.
authorDavid Chisnall <csdavec@swan.ac.uk>
Fri, 29 Apr 2011 14:10:35 +0000 (14:10 +0000)
committerDavid Chisnall <csdavec@swan.ac.uk>
Fri, 29 Apr 2011 14:10:35 +0000 (14:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130500 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGObjCGNU.cpp

index 2116dc6bf50877eac8662cdbae962c1c68f57f57..d28cfa57df02024f0144022ac6da1fbbb69d1f39 100644 (file)
@@ -688,11 +688,13 @@ CGObjCGNU::CGObjCGNU(CodeGenModule &cgm, unsigned runtimeABIVersion,
   PtrTy = PtrToInt8Ty;
 
   // Object type
-  ASTIdTy = CGM.getContext().getCanonicalType(CGM.getContext().getObjCIdType());
-  if (QualType() == ASTIdTy) {
-    IdTy = PtrToInt8Ty;
-  } else {
+  QualType UnqualIdTy = CGM.getContext().getObjCIdType();
+  ASTIdTy = CanQualType();
+  if (UnqualIdTy != QualType()) {
+    ASTIdTy = CGM.getContext().getCanonicalType(UnqualIdTy);
     IdTy = cast<llvm::PointerType>(CGM.getTypes().ConvertType(ASTIdTy));
+  } else {
+    IdTy = PtrToInt8Ty;
   }
   PtrToIdTy = llvm::PointerType::getUnqual(IdTy);