diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2010-11-22 08:06:31 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2010-11-22 08:06:31 +0000 |
commit | 45c2fb1e69fd237ba9b5d1d04493179a85acb9b4 (patch) | |
tree | e088b3a34b22a833f813be47060c7b0a93cfc6d4 /clang/lib | |
parent | 39a6b22023ba9aa3e20df5a8f6026f17bda976cd (diff) | |
download | bcm5719-llvm-45c2fb1e69fd237ba9b5d1d04493179a85acb9b4.tar.gz bcm5719-llvm-45c2fb1e69fd237ba9b5d1d04493179a85acb9b4.zip |
Undo part of my previous commit to mm_malloc.h, going back to the use of
stdlib.h. There were numerous problems with forward declaring 'malloc' and
'free', but the most important is that these are reserved by POSIX and may be
implemented via a function-like macro.
As suggested by Dale Johannesen, I'm instead guarding the only include of this
in our builtin headers with __STDC_HOSTED__, and I've removed the include of
the header from the test suite. I'll discuss with folks whether we want to have
a hosted section of the test suite or not, and add it (and perhaps other tests)
back there if that's the direction.
llvm-svn: 119958
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Headers/mm_malloc.h | 18 | ||||
-rw-r--r-- | clang/lib/Headers/xmmintrin.h | 4 |
2 files changed, 9 insertions, 13 deletions
diff --git a/clang/lib/Headers/mm_malloc.h b/clang/lib/Headers/mm_malloc.h index a402b57fd24..e7da5434587 100644 --- a/clang/lib/Headers/mm_malloc.h +++ b/clang/lib/Headers/mm_malloc.h @@ -24,28 +24,20 @@ #ifndef __MM_MALLOC_H #define __MM_MALLOC_H -#include <stddef.h> +#include <stdlib.h> #ifdef _WIN32 #include <malloc.h> #else - -// Forward declare allocation functions to allow this header to parse without -// any system headers. #ifndef __cplusplus -extern void free(void *ptr); -extern void *malloc(size_t size) __attribute__((__malloc__)); extern int posix_memalign(void **memptr, size_t alignment, size_t size); #else -// Some systems (e.g. those with GNU libc) declare some of these functions with -// an exception specifier. Via an "egregious workaround" in -// Sema::CheckEquivalentExceptionSpec, Clang accepts the following as valid -// redeclarations of glibc's declarations. -extern "C" void free(void *ptr); -extern "C" void *malloc(size_t size) __attribute__((__malloc__)); +// Some systems (e.g. those with GNU libc) declare posix_memalign with an +// exception specifier. Via an "egregious workaround" in +// Sema::CheckEquivalentExceptionSpec, Clang accepts the following as a valid +// redeclaration of glibc's declaration. extern "C" int posix_memalign(void **memptr, size_t alignment, size_t size); #endif - #endif static __inline__ void *__attribute__((__always_inline__, __nodebug__, diff --git a/clang/lib/Headers/xmmintrin.h b/clang/lib/Headers/xmmintrin.h index 6f270f8e082..42dd3e8d3b8 100644 --- a/clang/lib/Headers/xmmintrin.h +++ b/clang/lib/Headers/xmmintrin.h @@ -34,7 +34,11 @@ typedef int __v4si __attribute__((__vector_size__(16))); typedef float __v4sf __attribute__((__vector_size__(16))); typedef float __m128 __attribute__((__vector_size__(16))); +// This header should only be included in a hosted environment as it depends on +// a standard library to provide allocation routines. +#if __STDC_HOSTED__ #include <mm_malloc.h> +#endif static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) _mm_add_ss(__m128 a, __m128 b) |