1 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */ 2 /* Memory allocation on the stack. 3 4 Copyright (C) 1995, 1999, 2001-2004, 2006-2020 Free Software Foundation, 5 Inc. 6 7 This program is free software; you can redistribute it and/or modify it 8 under the terms of the GNU General Public License as published 9 by the Free Software Foundation; either version 3, or (at your option) 10 any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 General Public License for more details. 16 17 You should have received a copy of the GNU General Public 18 License along with this program; if not, see 19 <https://www.gnu.org/licenses/>. 20 */ 21 22 /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H 23 means there is a real alloca function. */ 24 #ifndef _GL_ALLOCA_H 25 #define _GL_ALLOCA_H 26 27 /* alloca (N) returns a pointer to N bytes of memory 28 allocated on the stack, which will last until the function returns. 29 Use of alloca should be avoided: 30 - inside arguments of function calls - undefined behaviour, 31 - in inline functions - the allocation may actually last until the 32 calling function returns, 33 - for huge N (say, N >= 65536) - you never know how large (or small) 34 the stack is, and when the stack cannot fulfill the memory allocation 35 request, the program just crashes. 36 */ 37 38 #ifndef alloca 39 # ifdef __GNUC__ 40 /* Some version of mingw have an <alloca.h> that causes trouble when 41 included after 'alloca' gets defined as a macro. As a workaround, include 42 this <alloca.h> first and define 'alloca' as a macro afterwards. */ 43 # if (defined _WIN32 && ! defined __CYGWIN__) && 1 44 # include_next <alloca.h> 45 # endif 46 # define alloca __builtin_alloca 47 # elif defined _AIX 48 # define alloca __alloca 49 # elif defined _MSC_VER 50 # include <malloc.h> 51 # define alloca _alloca 52 # elif defined __DECC && defined __VMS 53 # define alloca __ALLOCA 54 # elif defined __TANDEM && defined _TNS_E_TARGET 55 # ifdef __cplusplus 56 extern "C" 57 # endif 58 void *_alloca (unsigned short); 59 # pragma intrinsic (_alloca) 60 # define alloca _alloca 61 # elif defined __MVS__ 62 # include <stdlib.h> 63 # else 64 # include <stddef.h> 65 # ifdef __cplusplus 66 extern "C" 67 # endif 68 void *alloca (size_t); 69 # endif 70 #endif 71 72 #endif /* _GL_ALLOCA_H */ 73