]> granicus.if.org Git - clang/commitdiff
Revert "[analyzer] Make MallocChecker more robust against custom redeclarations"
authorDevin Coughlin <dcoughlin@apple.com>
Sun, 16 Oct 2016 19:26:07 +0000 (19:26 +0000)
committerDevin Coughlin <dcoughlin@apple.com>
Sun, 16 Oct 2016 19:26:07 +0000 (19:26 +0000)
This reverts commit r284335.

It appears to be causing test-suite compile-time and execution-time
performance measurements to take longer than expected on several bots.
This is surprising, because r284335 is a static-analyzer-only change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284340 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Checkers/MallocChecker.cpp
test/Analysis/malloc-custom.c [deleted file]

index a00fd1d421eb9285f3f02b31ac05f9f0f6d0c254..e3c940f6be80339c7fd9277245ea386a862844a4 100644 (file)
@@ -778,8 +778,6 @@ void MallocChecker::checkPostStmt(const CallExpr *CE, CheckerContext &C) const {
           State = MallocMemAux(C, CE, CE->getArg(0), UndefinedVal(), State);
       }
     } else if (FunI == II_kmalloc) {
-      if (CE->getNumArgs() < 1)
-        return;
       llvm::Optional<ProgramStateRef> MaybeState =
         performKernelMalloc(CE, C, State);
       if (MaybeState.hasValue())
@@ -809,8 +807,6 @@ void MallocChecker::checkPostStmt(const CallExpr *CE, CheckerContext &C) const {
     } else if (FunI == II_strndup) {
       State = MallocUpdateRefState(C, CE, State);
     } else if (FunI == II_alloca || FunI == II_win_alloca) {
-      if (CE->getNumArgs() < 1)
-        return;
       State = MallocMemAux(C, CE, CE->getArg(0), UndefinedVal(), State,
                            AF_Alloca);
       State = ProcessZeroAllocation(C, CE, 0, State);
diff --git a/test/Analysis/malloc-custom.c b/test/Analysis/malloc-custom.c
deleted file mode 100644 (file)
index 3c16bbd..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -Wno-incompatible-library-redeclaration -verify %s
-
-// Various tests to make the the analyzer is robust against custom
-// redeclarations of memory routines.
-//
-// You wouldn't expect to see much of this in normal code, but, for example,
-// CMake tests can generate these.
-
-// expected-no-diagnostics
-
-char alloca();
-char malloc();
-char realloc();
-char kmalloc();
-char valloc();
-char calloc();
-
-char free();
-char kfree();
-
-void testCustomArgumentlessAllocation() {
-  alloca(); // no-crash
-  malloc(); // no-crash
-  realloc(); // no-crash
-  kmalloc(); // no-crash
-  valloc(); // no-crash
-  calloc(); // no-crash
-
-  free(); // no-crash
-  kfree(); // no-crash
-}
-