headers, where malloc (and many other libc functions) are declared with empty throw specifications, e.g., extern void *malloc (__SIZE_TYPE__ __size) throw () __attribute__ ((__malloc__)) ; The C++ standard doesn't seem to allow this, and redeclaring malloc as the standard permits (as follows) resulted in Clang (rightfully!) complaining about mis-matched exception specifications. void *malloc(size_t size); We work around this by silently propagating an empty throw specification "throw()" from a function with C linkage declared in a system header to a redeclaration that has no throw specifier. Ick. llvm-svn: 95969
7 lines
128 B
C++
7 lines
128 B
C++
// RUN: %clang_cc1 -isystem %S/Inputs -fsyntax-only -verify %s
|
|
#include <malloc.h>
|
|
|
|
extern "C" {
|
|
void *malloc(__SIZE_TYPE__);
|
|
}
|