1 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */ 2 /* Memory allocation on the stack. 3 4 Copyright (C) 1995, 1999, 2001-2004, 2006-2012 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 <http://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 # define alloca __builtin_alloca 41 # elif defined _AIX 42 # define alloca __alloca 43 # elif defined _MSC_VER 44 # include <malloc.h> 45 # define alloca _alloca 46 # elif defined __DECC && defined __VMS 47 # define alloca __ALLOCA 48 # elif defined __TANDEM && defined _TNS_E_TARGET 49 # ifdef __cplusplus 50 extern "C" 51 # endif 52 void *_alloca (unsigned short); 53 # pragma intrinsic (_alloca) 54 # define alloca _alloca 55 # else 56 # include <stddef.h> 57 # ifdef __cplusplus 58 extern "C" 59 # endif 60 void *alloca (size_t); 61 # endif 62 #endif 63 64 #endif /* _GL_ALLOCA_H */ 65