r221714 - Revert r221702 until I address Richard Trieu's

Fariborz Jahanian fjahanian at apple.com
Tue Nov 11 13:54:19 PST 2014


Author: fjahanian
Date: Tue Nov 11 15:54:19 2014
New Revision: 221714

URL: http://llvm.org/viewvc/llvm-project?rev=221714&view=rev
Log:
Revert r221702 until I address Richard Trieu's
comments.


Modified:
    cfe/trunk/include/clang/Sema/Sema.h
    cfe/trunk/lib/Sema/SemaChecking.cpp
    cfe/trunk/lib/Sema/SemaExpr.cpp
    cfe/trunk/test/Analysis/logical-ops.c
    cfe/trunk/test/Sema/exprs.c
    cfe/trunk/test/Sema/warn-tautological-compare.c

Modified: cfe/trunk/include/clang/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=221714&r1=221713&r2=221714&view=diff
==============================================================================
--- cfe/trunk/include/clang/Sema/Sema.h (original)
+++ cfe/trunk/include/clang/Sema/Sema.h Tue Nov 11 15:54:19 2014
@@ -8033,7 +8033,6 @@ public:
   void DiagnoseAlwaysNonNullPointer(Expr *E,
                                     Expr::NullPointerConstantKind NullType,
                                     bool IsEqual, SourceRange Range);
-  void CheckAlwaysNonNullPointer(Expr *OrigExp);
 
   /// type checking for vector binary operators.
   QualType CheckVectorOperands(ExprResult &LHS, ExprResult &RHS,

Modified: cfe/trunk/lib/Sema/SemaChecking.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=221714&r1=221713&r2=221714&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaChecking.cpp (original)
+++ cfe/trunk/lib/Sema/SemaChecking.cpp Tue Nov 11 15:54:19 2014
@@ -6748,17 +6748,6 @@ void Sema::DiagnoseAlwaysNonNullPointer(
       << FixItHint::CreateInsertion(getLocForEndOfToken(E->getLocEnd()), "()");
 }
 
-void Sema::CheckAlwaysNonNullPointer(Expr *OrigExpr) {
-  if (const UnaryOperator *U = dyn_cast<UnaryOperator>(OrigExpr))
-    if (U->getOpcode() == UO_LNot)
-      return CheckAlwaysNonNullPointer(U->getSubExpr());
-    
-  Expr *E = OrigExpr->IgnoreParenImpCasts();
-  QualType Source = E->getType();
-  if (Source->isPointerType() || Source->canDecayToPointerType())
-    DiagnoseAlwaysNonNullPointer(E, Expr::NPCK_NotNull, /*IsEqual*/ false,
-                                 SourceRange());
-}
 
 /// Diagnoses "dangerous" implicit conversions within the given
 /// expression (which is a full expression).  Implements -Wconversion

Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=221714&r1=221713&r2=221714&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Tue Nov 11 15:54:19 2014
@@ -8413,10 +8413,7 @@ inline QualType Sema::CheckLogicalOperan
     if (!LHS.get()->getType()->isScalarType() ||
         !RHS.get()->getType()->isScalarType())
       return InvalidOperands(Loc, LHS, RHS);
-    
-    CheckAlwaysNonNullPointer(LHS.get());
-    CheckAlwaysNonNullPointer(RHS.get());
-    
+
     return Context.IntTy;
   }
 
@@ -12974,7 +12971,6 @@ ExprResult Sema::CheckBooleanCondition(E
         << T << E->getSourceRange();
       return ExprError();
     }
-    CheckAlwaysNonNullPointer(E);
   }
 
   return E;

Modified: cfe/trunk/test/Analysis/logical-ops.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/logical-ops.c?rev=221714&r1=221713&r2=221714&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/logical-ops.c (original)
+++ cfe/trunk/test/Analysis/logical-ops.c Tue Nov 11 15:54:19 2014
@@ -36,5 +36,4 @@ int between(char *x) {
 int undef(void) {} // expected-warning{{control reaches end of non-void function}}
 void useUndef(void) { 0 || undef(); }
 
-void testPointer(void) { (void) (1 && testPointer && 0); } // expected-warning {{address of function 'testPointer' will always evaluate to 'true'}} \
-							   // expected-note {{prefix with the address-of operator to silence this warning}}
+void testPointer(void) { (void) (1 && testPointer && 0); }

Modified: cfe/trunk/test/Sema/exprs.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/exprs.c?rev=221714&r1=221713&r2=221714&view=diff
==============================================================================
--- cfe/trunk/test/Sema/exprs.c (original)
+++ cfe/trunk/test/Sema/exprs.c Tue Nov 11 15:54:19 2014
@@ -244,10 +244,6 @@ void test22() {
   if ("help")
     (void) 0;
 
-  if (test22) // expected-warning {{address of function 'test22' will always evaluate to 'true'}} \
-	      // expected-note {{prefix with the address-of operator to silence this warning}}
-    (void) 0;
-
-  if (&test22)
+  if (test22)
     (void) 0;
 }

Modified: cfe/trunk/test/Sema/warn-tautological-compare.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/warn-tautological-compare.c?rev=221714&r1=221713&r2=221714&view=diff
==============================================================================
--- cfe/trunk/test/Sema/warn-tautological-compare.c (original)
+++ cfe/trunk/test/Sema/warn-tautological-compare.c Tue Nov 11 15:54:19 2014
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -verify  %s
-// rdar://18716393
-
-extern int a[] __attribute__((weak));
-int b[] = {8,13,21};
-struct {
-  int x[10];
-} c;
-const char str[] = "text";
-
-void ignore() {
-  if (!a) {}
-}
-void test() {
-  if (!b) {} // expected-warning {{address of array 'b' will always evaluate to 'true'}}
-  if (b == 0) {} // expected-warning {{comparison of array 'b' equal to a null pointer is always false}}
-  if (!c.x) {} // expected-warning {{address of array 'c.x' will always evaluate to 'true'}}
-  if (c.x == 0) {} // expected-warning {{comparison of array 'c.x' equal to a null pointer is always false}}
-  if (!str) {} // expected-warning {{address of array 'str' will always evaluate to 'true'}}
-  if (0 == str) {} // expected-warning {{comparison of array 'str' equal to a null pointer is always false}}
-}
-
-int array[2];
-int test1()
-{
-  if (!array) { // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-    return array[0];
-  } else if (array != 0) { // expected-warning {{comparison of array 'array' not equal to a null pointer is always true}}
-    return array[1];
-  }
-  if (array == 0) // expected-warning {{comparison of array 'array' equal to a null pointer is always false}}
-    return 1;
-  return 0;
-}
-
-#define NULL (void*)0
-
-int test2(int* pointer, char ch, void * pv) {
-   if (!&pointer) {  // expected-warning {{address of 'pointer' will always evaluate to 'true'}}
-     return 0;
-   }
-
-   if (&pointer) {  // expected-warning {{address of 'pointer' will always evaluate to 'true'}}
-     return 0;
-   }
-
-   if (&pointer == NULL) {} // expected-warning {{comparison of address of 'pointer' equal to a null pointer is always false}}
-
-   if (&pointer != NULL) {} // expected-warning {{comparison of address of 'pointer' not equal to a null pointer is always true}}
-
-   return 1;
-}
-
-void test3() {
-   if (array) { } // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-   if (array != 0) {} // expected-warning {{comparison of array 'array' not equal to a null pointer is always true}}
-   if (!array) { } // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-   if (array == 0) {} // expected-warning {{comparison of array 'array' equal to a null pointer is always false}}
-
-   if (array[0] &&
-       array) {} // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-
-   if (array[0] ||
-       array) {} // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-
-   if (array[0] &&
-       !array) {} // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-   if (array[0] ||
-       !array) {} // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-
-   if (array && // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-       array[0]) {}
-   if (!array || // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-       array[0]) {}
-
-   if (array ||  // expected-warning {{address of array 'array' will always evaluate to 'true'}}
-       (!array && array[0])) {} // expected-warning {{address of array 'array' will always evaluate to 'true'}}
- }
-
-





More information about the cfe-commits mailing list