Subject: Re: Reason for cygwin GCC 2.97 non-bootstrap found
From: "Kelley Cook" <[email-masked]>
To: "Zack Weinberg" <[email-masked]>
Cc: "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>, "Cygwin mailing list" <[email-masked]>
Date: Tue, 21 Nov 2000 13:39:01 -0500

>That change was a marginal performance hack and I don't think it'd do
>any harm to scrap it.  However, I am currently testing a patch which
>moves the memory allocation mess into libiberty.  (It's a modified
>version of the patch by Alexandre Oliva and Laurnyas Bivenis - less
>complex, hopefully just as effective.)  I'd be curious to know how it
>works on cygwin.  Patch is appended.

Thanks Zack for looking at this.

Unfortunately, your new patch also fails, a least as applied to the
version I have at work.  Because of CVS/firewall issues, I am working
with the 11-13-2000 snapshot, which doesn't have your stringpool.c
changes.  I am pretty sure that the patch applied sucessfully though. 
BTW, is there a direct way of applying a CVS -diff to files using
patch?  I ended up breaking your patch into 11 different .diff files
and apply them each individually.

----------
...
stage1/xgcc.exe -Bstage1/ -B/usr/local/i686-pc-cygwin/bin/ -DIN_GCC -g
-O2 -W -Wall -Wwrite-strings -Wstrictprototypes -Wmissing-prototypes
-Wtraditional -pedantic -Wno-long-long  -DHAVE_CONFIG_H -I. -I.
-I/src/gcc-20001113/gcc -I/src/gcc-20001113/gcc/.
-I/src/gcc-20001113/gcc/config -I/src/gcc-20001113/gcc/../include -c
/src/gcc-20001113/gcc/c-parse.c
/usr/share/bison.simple: In function `yyparse':
/usr/share/bison.simple:761: Internal compiler error in clear_marks, at
ggc-page.c:815
   Please submit a full bug report.
   See <URL:http://www.gnu.org/software/gcc/bugs.html> for
instructions.
make[2]: *** [c-parse.o] Error 1
make[2]: Leaving directory `/obj/gcctest/gcc'
make[1]: *** [stage_c] Error 2
make[1]: Leaving directory `/obj/gcctest/gcc'
make: *** [bootstrap] Error 2
--------

Line 815 is the check for page-alignedness in clear_marks
---------
static inline void
clear_marks ()
{
  unsigned order;

  for (order = 2; order <= G.lg_pagesize; order++)
    {
      size_t num_objects = OBJECTS_PER_PAGE (order);
      size_t bitmap_size = BITMAP_SIZE (num_objects + 1);
      page_entry *p;

      for (p = G.pages[order]; p != NULL; p = p->next)
        {
#ifdef ENABLE_CHECKING
          /* The data should be page-aligned.  */
          if ((size_t) p->page & (G.pagesize - 1))
            abort ();         /* Line 815 */
#endif
...
--------------
Attempting to compile with --enable-checking=no will segfault on the
same file.

I am flying out to California for Thanksgiving, so I unfortunately will
not be able to test anything more until Sunday.

Thanks again,
Kelley Cook

--
Want to unsubscribe from this list?
Send a message to [email-masked]