From: Paul Smith Date: Wed, 2 Dec 2020 22:29:16 +0000 (-0500) Subject: * src/makeint.h (free_alloca): Check for builtin alloca X-Git-Tag: 4.3.90~198 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5e234e404810ecfa930fca40b85b009c9271a33f;p=thirdparty%2Fmake.git * src/makeint.h (free_alloca): Check for builtin alloca --- diff --git a/src/makeint.h b/src/makeint.h index c4cc4dfd..70ee2b6d 100644 --- a/src/makeint.h +++ b/src/makeint.h @@ -43,10 +43,18 @@ char *alloca (); /* Some versions of GCC (e.g., 10.x) set the warn_unused_result attribute on __builtin_alloca. This causes alloca(0) to fail and is not easily worked - around so make a helper. + around so avoid it via the preprocessor. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98055 */ -#define free_alloca() do{ void *__p = alloca (0); (void)__p; }while(0) +#if defined (__has_builtin) +# if __has_builtin (__builtin_alloca) +# define free_alloca() +# else +# define free_alloca() alloca (0) +# endif +#else +# define free_alloca() alloca (0) +#endif /* Disable assert() unless we're a maintainer. Some asserts are compute-intensive. */