diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 1cd2352..05926018 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -443,7 +443,8 @@
 
   // C99 6.5.2.1p1: "shall have type "pointer to *object* type".  In practice,
   // the following check catches trying to index a pointer to a function (e.g.
-  // void (*)(int)). Functions are not objects in C99.
+  // void (*)(int)) and pointers to incomplete types.  Functions are not
+  // objects in C99.
   if (!ResultType->isObjectType())
     return Diag(BaseExpr->getLocStart(), 
                 diag::err_typecheck_subscript_not_object,
@@ -837,7 +838,7 @@
 
       // ignore qualifiers on void (C99 6.5.15p3, clause 6)
       if (lhptee->isVoidType() &&
-          (rhptee->isObjectType() || rhptee->isIncompleteType())) {
+          rhptee->isIncompleteOrObjectType()) {
         // Figure out necessary qualifiers (C99 6.5.15p6)
         QualType destPointee=lhptee.getQualifiedType(rhptee.getCVRQualifiers());
         QualType destType = Context.getPointerType(destPointee);
@@ -845,8 +846,7 @@
         ImpCastExprToType(rex, destType); // promote to void*
         return destType;
       }
-      if (rhptee->isVoidType() &&
-          (lhptee->isObjectType() || lhptee->isIncompleteType())) {
+      if (rhptee->isVoidType() && lhptee->isIncompleteOrObjectType()) {
         QualType destPointee=rhptee.getQualifiedType(lhptee.getCVRQualifiers());
         QualType destType = Context.getPointerType(destPointee);
         ImpCastExprToType(lex, destType); // add qualifiers if necessary
@@ -1127,21 +1127,21 @@
   // incomplete type and the other is a pointer to a qualified or unqualified 
   // version of void...
   if (lhptee->isVoidType()) {
-    if (rhptee->isObjectType() || rhptee->isIncompleteType())
+    if (rhptee->isIncompleteOrObjectType())
       return ConvTy;
     
     // As an extension, we allow cast to/from void* to function pointer.
-    if (rhptee->isFunctionType())
-      return FunctionVoidPointer;
+    assert(rhptee->isFunctionType());
+    return FunctionVoidPointer;
   }
   
   if (rhptee->isVoidType()) {
-    if (lhptee->isObjectType() || lhptee->isIncompleteType())
+    if (lhptee->isIncompleteOrObjectType())
       return ConvTy;
 
     // As an extension, we allow cast to/from void* to function pointer.
-    if (lhptee->isFunctionType())
-      return FunctionVoidPointer;
+    assert(lhptee->isFunctionType());
+    return FunctionVoidPointer;
   }
   
   // C99 6.5.16.1p1 (constraint 3): both operands are pointers to qualified or 
diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp
index a1cabcf..76bb63b 100644
--- a/lib/Sema/SemaType.cpp
+++ b/lib/Sema/SemaType.cpp
@@ -167,8 +167,7 @@
 
       // If we have a pointer or reference, the pointee must have an object or
       // incomplete type.
-      if (!EltTy.isNull() && !EltTy->isObjectType() &&
-          !EltTy->isIncompleteType()) {
+      if (!EltTy.isNull() && !EltTy->isIncompleteOrObjectType()) {
         Diag(DS.getRestrictSpecLoc(),
              diag::err_typecheck_invalid_restrict_invalid_pointee,
              EltTy.getAsString(), DS.getSourceRange());
@@ -229,7 +228,7 @@
       // Enforce C99 6.7.3p2: "Types other than pointer types derived from
       // object or incomplete types shall not be restrict-qualified."
       if ((DeclType.Ptr.TypeQuals & QualType::Restrict) &&
-          !T->isObjectType() && !T->isIncompleteType()) {
+          !T->isIncompleteOrObjectType()) {
         Diag(DeclType.Loc,
              diag::err_typecheck_invalid_restrict_invalid_pointee,
              T.getAsString());
@@ -256,7 +255,7 @@
       // Enforce C99 6.7.3p2: "Types other than pointer types derived from
       // object or incomplete types shall not be restrict-qualified."
       if (DeclType.Ref.HasRestrict &&
-          !T->isObjectType() && !T->isIncompleteType()) {
+          !T->isIncompleteOrObjectType()) {
         Diag(DeclType.Loc,
              diag::err_typecheck_invalid_restrict_invalid_pointee,
              T.getAsString());
