This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: cfgcleanup bugfix installed
- To: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>
- Subject: Re: cfgcleanup bugfix installed
- From: Jan Hubicka <jh at suse dot cz>
- Date: Sat, 27 Oct 2001 20:19:10 +0200
- Cc: toa at pop dot agri dot ch, gcc-patches at gcc dot gnu dot org, jh at suse dot cz, rth at redhat dot com
- References: <200110271720.NAA00739@caip.rutgers.edu>
>
> > From: Andreas Tobler <toa at pop dot agri dot ch>
> >
> > > > Andreas
> > > >
> > > > P.S. solaris-2.6 I'll verify on monday.
> > > I've got sucesfull bootstrap at ultra here, so it should work.
>
> I'm still getting a similar failure on sparc-sun-solaris2.7:
>
> stage1/xgcc -Bstage1/ -B/usr/local/sparc-sun-solaris2.7/bin/ -c
> -DIN_GCC -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes
> -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long
> -DHAVE_CONFIG_H -I. -I. -I../../egcs-CVS20011027/gcc
> -I../../egcs-CVS20011027/gcc/. -I../../egcs-CVS20011027/gcc/config
> -I../../egcs-CVS20011027/gcc/../include
> ../../egcs-CVS20011027/gcc/calls.c -o calls.o
> calls.c: In function `save_fixed_argument_area':
> calls.c:961: Internal compiler error in ?, at sched-rgn.c:2942
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
> make[2]: *** [calls.o] Error 1
>
> If you need a .i file let me know.
I am just testing following fix. The problem is that function in question
swaps meaning of a and b in the middle and I do the setting too early :(
It solves similar problems for me. Having preprocessed file can be nice,
as I can't reproduce it on my bootstrap.
Index: cfgcleanup.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cfgcleanup.c,v
retrieving revision 1.13
diff -c -3 -p -r1.13 cfgcleanup.c
*** cfgcleanup.c 2001/10/27 10:17:44 1.13
--- cfgcleanup.c 2001/10/27 18:18:06
*************** merge_blocks_move_predecessor_nojumps (a
*** 334,340 ****
/* Scramble the insn chain. */
if (a->end != PREV_INSN (b->head))
reorder_insns_nobb (a->head, a->end, PREV_INSN (b->head));
- BB_SET_FLAG (a, BB_UPDATE_LIFE);
if (rtl_dump_file)
{
--- 334,339 ----
*************** merge_blocks_move_predecessor_nojumps (a
*** 350,355 ****
--- 349,355 ----
index = a->index;
a->index = b->index;
b->index = index;
+ BB_SET_FLAG (a, BB_UPDATE_LIFE);
/* Now blocks A and B are contiguous. Merge them. */
merge_blocks_nomove (a, b);