From: Devin Coughlin Date: Sun, 16 Oct 2016 19:26:07 +0000 (+0000) Subject: Revert "[analyzer] Make MallocChecker more robust against custom redeclarations" X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e4dfcf62c0f851642f21d9a83f013b75833092e5;p=clang Revert "[analyzer] Make MallocChecker more robust against custom redeclarations" 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 --- diff --git a/lib/StaticAnalyzer/Checkers/MallocChecker.cpp b/lib/StaticAnalyzer/Checkers/MallocChecker.cpp index a00fd1d421..e3c940f6be 100644 --- a/lib/StaticAnalyzer/Checkers/MallocChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/MallocChecker.cpp @@ -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 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 index 3c16bbd17e..0000000000 --- a/test/Analysis/malloc-custom.c +++ /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 -} -