r210388 - Fix crash declaring global allocation function with zero parameters. Fixes PR19968!

Nick Lewycky nicholas at mxc.ca
Fri Jun 6 17:43:57 PDT 2014


Author: nicholas
Date: Fri Jun  6 19:43:57 2014
New Revision: 210388

URL: http://llvm.org/viewvc/llvm-project?rev=210388&view=rev
Log:
Fix crash declaring global allocation function with zero parameters. Fixes PR19968!

Modified:
    cfe/trunk/lib/AST/Decl.cpp
    cfe/trunk/test/SemaCXX/new-delete.cpp

Modified: cfe/trunk/lib/AST/Decl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=210388&r1=210387&r2=210388&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Decl.cpp (original)
+++ cfe/trunk/lib/AST/Decl.cpp Fri Jun  6 19:43:57 2014
@@ -2348,7 +2348,7 @@ bool FunctionDecl::isReplaceableGlobalAl
     return false;
 
   const FunctionProtoType *FPT = getType()->castAs<FunctionProtoType>();
-  if (FPT->getNumParams() > 2 || FPT->isVariadic())
+  if (FPT->getNumParams() == 0 || FPT->getNumParams() > 2 || FPT->isVariadic())
     return false;
 
   // If this is a single-parameter function, it must be a replaceable global

Modified: cfe/trunk/test/SemaCXX/new-delete.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/new-delete.cpp?rev=210388&r1=210387&r2=210388&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/new-delete.cpp (original)
+++ cfe/trunk/test/SemaCXX/new-delete.cpp Fri Jun  6 19:43:57 2014
@@ -521,3 +521,6 @@ class DeletingPlaceholder {
 namespace PR18544 {
   inline void *operator new(size_t); // expected-error {{'operator new' cannot be declared inside a namespace}}
 }
+
+// PR19968
+inline void* operator new(); // expected-error {{'operator new' must have at least one parameter}}





More information about the cfe-commits mailing list