]> git.saurik.com Git - bison.git/blobdiff - src/conflicts.c
(__yy_memcpy): Really reorder the args, as was supposedly done on Feb 14 1995.
[bison.git] / src / conflicts.c
index 4ed9dea724dd88f238f6db27088fefbc861f077e..29656f320782515a6cefdacc7e0e03c5ac5a3b62 100644 (file)
@@ -1,5 +1,5 @@
 /* Find and resolve or report look-ahead conflicts for bison,
-   Copyright (C) 1984, 1989 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 1992 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Compiler Compiler.
 
@@ -17,9 +17,6 @@ You should have received a copy of the GNU General Public License
 along with Bison; see the file COPYING.  If not, write to
 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-#ifdef _AIX
- #pragma alloca
-#endif
 #include <stdio.h>
 #include "system.h"
 #include "machine.h"
@@ -29,18 +26,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "state.h"
 
 
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#else
-#ifndef _AIX
-extern char *alloca ();
-#endif
-#endif
-#endif
-
 extern char **tags;
 extern int tokensetsize;
 extern char *consistent;
@@ -189,8 +174,7 @@ int lookaheadnum;
   register unsigned *fp1;
   register unsigned *fp2;
   register int redprec;
-  /* Extra parens avoid errors on Ultrix 4.3.  */
-  errs *errp = (errs *) alloca ((sizeof(errs) + ntokens * sizeof(short)));
+  errs *errp = (errs *) xmalloc (sizeof(errs) + ntokens * sizeof(short));
   short *errtokens = errp->errs;
 
   /* find the rule to reduce by to get precedence of reduction  */
@@ -275,6 +259,7 @@ int lookaheadnum;
     }
   else
     err_table[state] = 0;
+  free(errp);
 }
 
 
@@ -643,7 +628,7 @@ int state;
            fp3 = lookaheadset;
   
            while (fp3 < fp4)
-             *fp3++ = *fp1++ & ( ~ (*fp2++));
+             *fp3++ = *fp1++ & (~(*fp2++));
   
            count = 0;
            mask = 1;
@@ -741,9 +726,9 @@ int state;
          if (mask == 0)
            {
              mask = 1;
-             /* This used to be fp1, but I think fp2 is right
-                because fp2 is where the words are fetched to test with mask
-                in this loop.  */
+             /* We tried incrementing just fp1, and just fp2; both seem wrong.
+                It seems necessary to increment both in sync.  */
+             fp1++;
              fp2++;
            }
        }