]> git.saurik.com Git - bison.git/commitdiff
(union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 18 Mar 2002 21:48:47 +0000 (21:48 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 18 Mar 2002 21:48:47 +0000 (21:48 +0000)
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.

src/bison.simple

index 2eb4e3787f8455f6573587558eb6eaa11f2a79c3..3b11285b4e90e28efe8e10a19a9255ceaf33a495 100644 (file)
 #  define YYSTACK_ALLOC malloc
 #  define YYSTACK_FREE free
 # endif
 #  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
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
@@ -109,7 +115,7 @@ union yyalloc
       }                                                                        \
     while (0)
 
       }                                                                        \
     while (0)
 
-#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+#endif
 
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -236,7 +242,7 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 \f
 # define YYMAXDEPTH 10000
 #endif
 \f
-#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++ */
 # 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 */
        yyvs = yyvs1;
       }
 #else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyoverflowlab;
+# else
       /* Extend the stack our own way.  */
       if (yystacksize >= YYMAXDEPTH)
        goto yyoverflowlab;
       /* 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);
       }
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
       }
+# endif
 #endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
 #endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;