summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2002-03-18 21:48:47 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2002-03-18 21:48:47 +0000
commit8afe2396ab8f3d3dfa2c066a1907ce002066f5ab (patch)
tree860a82e446b9e4b82d24c7eebd6381f9792378f2
parentd7be63a140a2c1fa68e76fa2f8bc8075bc3e21ce (diff)
downloadbison-8afe2396ab8f3d3dfa2c066a1907ce002066f5ab.tar.gz
(union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
Do not define if yyoverflow is defined, or if this is a C++ parser and either YYSTYPE or YYLTYPE has nontrivial constructors or destructors. (yymemcpy) [! defined YYSTACK_RELOCATE]: Do not define; not needed. (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
-rw-r--r--src/bison.simple14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/bison.simple b/src/bison.simple
index 2eb4e378..3b11285b 100644
--- a/src/bison.simple
+++ b/src/bison.simple
@@ -66,6 +66,12 @@
# define YYSTACK_ALLOC malloc
# define YYSTACK_FREE free
# endif
+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+
+
+#if (! defined (yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
@@ -109,7 +115,7 @@ union yyalloc
} \
while (0)
-#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+#endif
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -236,7 +242,7 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
-#if ! defined (yyoverflow) && ! defined (yymemcpy)
+#if defined (YYSTACK_RELOCATE) && ! defined (yymemcpy)
# if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
# define yymemcpy __builtin_memcpy
# else /* not GNU C or C++ */
@@ -504,6 +510,9 @@ yyparse (YYPARSE_PARAM_ARG)
yyvs = yyvs1;
}
#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyoverflowlab;
+# else
/* Extend the stack our own way. */
if (yystacksize >= YYMAXDEPTH)
goto yyoverflowlab;
@@ -526,6 +535,7 @@ yyparse (YYPARSE_PARAM_ARG)
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
+# endif
#endif /* no yyoverflow */
yyssp = yyss + yysize - 1;