This patch reverts r220496 which issues warning on comparing 
parameters with nonnull attribute when comparison is always
true/false. Patch causes false positive when parameter is
modified in the function.

llvm-svn: 221163
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 495fa32..ea4f347 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -6678,37 +6678,7 @@
   // Weak Decls can be null.
   if (!D || D->isWeak())
     return;
-  // Check for parameter decl with nonnull attribute
-  if (ParmVarDecl* PV = dyn_cast<ParmVarDecl>(D)) {
-    if (FunctionDecl* FD = dyn_cast<FunctionDecl>(PV->getDeclContext())) {
-      unsigned NumArgs = FD->getNumParams();
-      llvm::SmallBitVector AttrNonNull(NumArgs);
-      for (const auto *NonNull : FD->specific_attrs<NonNullAttr>()) {
-        if (!NonNull->args_size()) {
-          AttrNonNull.set(0, NumArgs);
-          break;
-        }
-        for (unsigned Val : NonNull->args()) {
-          if (Val >= NumArgs)
-            continue;
-          AttrNonNull.set(Val);
-        }
-      }
-      if (!AttrNonNull.empty())
-        for (unsigned i = 0; i < NumArgs; ++i)
-          if (FD->getParamDecl(i) == PV && AttrNonNull[i]) {
-            std::string Str;
-            llvm::raw_string_ostream S(Str);
-            E->printPretty(S, nullptr, getPrintingPolicy());
-            unsigned DiagID = IsCompare ? diag::warn_nonnull_parameter_compare
-                                        : diag::warn_cast_nonnull_to_bool;
-            Diag(E->getExprLoc(), DiagID) << S.str() << E->getSourceRange()
-              << Range << IsEqual;
-            return;
-          }
-    }
-  }
-  
+    
   QualType T = D->getType();
   const bool IsArray = T->isArrayType();
   const bool IsFunction = T->isFunctionType();