Sema::CheckAdditionOperands(): Use Type::getPointeeType() and remove PTy and OPT variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75505 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index bb162e4..ee80cca 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -3831,15 +3831,8 @@
       PExp->getType()->isObjCObjectPointerType()) {
     
     if (IExp->getType()->isIntegerType()) {
-      QualType PointeeTy;
-      const PointerType *PTy = NULL;
-      const ObjCObjectPointerType *OPT = NULL;
+      QualType PointeeTy = PExp->getType()->getPointeeType();
       
-      if ((PTy = PExp->getType()->getAsPointerType()))
-        PointeeTy = PTy->getPointeeType();
-      else if ((OPT = PExp->getType()->getAsObjCObjectPointerType()))
-        PointeeTy = OPT->getPointeeType();
-                 
       // Check for arithmetic on pointers to incomplete types.
       if (PointeeTy->isVoidType()) {
         if (getLangOptions().CPlusPlus) {
@@ -3861,13 +3854,17 @@
         // GNU extension: arithmetic on pointer to function
         Diag(Loc, diag::ext_gnu_ptr_func_arith)
           << lex->getType() << lex->getSourceRange();
-      } else if (((PTy && !PTy->isDependentType()) || OPT) &&
-                 RequireCompleteType(Loc, PointeeTy,
-                                diag::err_typecheck_arithmetic_incomplete_type,
-                                     PExp->getSourceRange(), SourceRange(),
-                                     PExp->getType()))
-        return QualType();
-
+      } else { 
+        // Check if we require a complete type.
+        if (((PExp->getType()->isPointerType() && 
+              !PExp->getType()->getAsPointerType()->isDependentType()) ||
+              PExp->getType()->isObjCObjectPointerType()) &&
+             RequireCompleteType(Loc, PointeeTy,
+                                 diag::err_typecheck_arithmetic_incomplete_type,
+                                 PExp->getSourceRange(), SourceRange(),
+                                 PExp->getType()))
+          return QualType();
+      }
       // Diagnose bad cases where we step over interface counts.
       if (PointeeTy->isObjCInterfaceType() && LangOpts.ObjCNonFragileABI) {
         Diag(Loc, diag::err_arithmetic_nonfragile_interface)