From 5e234e404810ecfa930fca40b85b009c9271a33f Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Wed, 2 Dec 2020 17:29:16 -0500 Subject: [PATCH] * src/makeint.h (free_alloca): Check for builtin alloca --- src/makeint.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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. */ -- 2.47.3