[cfe-commits] r75505 - /cfe/trunk/lib/Sema/SemaExpr.cpp

Steve Naroff snaroff at apple.com
Mon Jul 13 14:20:41 PDT 2009


Author: snaroff
Date: Mon Jul 13 16:20:41 2009
New Revision: 75505

URL: http://llvm.org/viewvc/llvm-project?rev=75505&view=rev
Log:
Sema::CheckAdditionOperands(): Use Type::getPointeeType() and remove PTy and OPT variables.

Modified:
    cfe/trunk/lib/Sema/SemaExpr.cpp

Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=75505&r1=75504&r2=75505&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Jul 13 16:20:41 2009
@@ -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)





More information about the cfe-commits mailing list