diff --git a/include/ChangeLog b/include/ChangeLog index ac8f2848a..fe6887463 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2009-03-18 Alan Modra + + * alloca-conf.h: Revise based on autoconf-2.61, autoconf-2.13 + documentation. + 2009-03-17 Jason Merrill * demangle.h (enum demangle_component_type): Add diff --git a/include/alloca-conf.h b/include/alloca-conf.h index 9c3eea396..9ba77953d 100644 --- a/include/alloca-conf.h +++ b/include/alloca-conf.h @@ -1,24 +1,44 @@ #include "config.h" -#if defined(__GNUC__) && !defined(C_ALLOCA) -# ifndef alloca -# define alloca __builtin_alloca -# endif -#else /* ! defined (__GNUC__) */ -# ifdef _AIX - #pragma alloca -# else -# if defined(HAVE_ALLOCA_H) && !defined(C_ALLOCA) -# include -# else /* ! defined (HAVE_ALLOCA_H) */ -# ifdef __STDC__ -extern PTR alloca (size_t); -# else /* ! defined (__STDC__) */ -extern PTR alloca (); -# endif /* ! defined (__STDC__) */ -# endif /* ! defined (HAVE_ALLOCA_H) */ -# ifdef _WIN32 -# include +/* This is a merge of code recommended in the autoconf-2.61 documentation + with that recommended in the autoconf-2.13 documentation, with added + tweaks to heed C_ALLOCA. */ + +#if defined HAVE_ALLOCA_H && !defined C_ALLOCA +# include +#else +# if defined __GNUC__ && !defined C_ALLOCA +# if !defined alloca +# define alloca __builtin_alloca # endif -# endif /* ! defined (_AIX) */ -#endif /* ! defined (__GNUC__) */ +# else +# if defined _AIX +/* Indented so that pre-ansi C compilers will ignore it, rather than + choke on it. Some versions of AIX require this to be the first + thing in the file except for comments and preprocessor directives. */ + #pragma alloca +# else +# if defined _MSC_VER && !defined C_ALLOCA +# include +# define alloca _alloca +# else +# if !defined alloca +# if defined __STDC__ || defined __hpux +# if defined HAVE_STDDEF_H +# include +# if defined __cplusplus +extern "C" void *alloca (size_t); +# else +extern void *alloca (size_t); +# endif +# else +extern void *alloca (); +# endif +# else +extern char *alloca (); +# endif +# endif +# endif +# endif +# endif +#endif