Hello, > If no one is suggesting an alternative, tested on x86 and x86_64-linux > where it restores bootstrap (at last :), ok to commit?
I think the patch is fine (although of course I cannot approve it). The more proper fix would be to never expand such expressions from ivopts; I have a patch for this, but it needs more testing and benchmarking. Zdenek > We're down to 6 ACATS FAIL on x86_64 and 8 on x86: > > http://gcc.gnu.org/ml/gcc-testresults/2005-07/msg00654.html > http://gcc.gnu.org/ml/gcc-testresults/2005-07/msg00653.html > > common: > 18818: cd10002 (run) stream attributes > 18819: cdd2a02 (run, works at -O0 everywhere) works with -O2 -fno-tree-sra > 22333: c34007p c34007r c45282b (run) spurious discriminant CONSTRAINT_ERROR > > x86 only: > 18659: c32001e c64105b c95086b (ICE x86, ppc, ia64, works on x86_64, pass > everywhere at -O0) works with -O2 -fno-tree-sra > > x86_64 only: > 20548: c52103x (run) segfault at runtime on x86_64 and hppa > > Laurent > > 2005-07-12 Richard Kenner <[EMAIL PROTECTED]> > Laurent GUERBY <[EMAIL PROTECTED]> > > PR tree-optimization/22336 > * function.c (record_block_change): Check for > cfun->ib_boundaries_block. > > > Index: function.c > =================================================================== > RCS file: /cvs/gcc/gcc/gcc/function.c,v > retrieving revision 1.635 > diff -u -r1.635 function.c > --- function.c 7 Jul 2005 21:04:31 -0000 1.635 > +++ function.c 10 Jul 2005 19:06:10 -0000 > @@ -5502,6 +5502,9 @@ > if (!block) > return; > > + if(!cfun->ib_boundaries_block) > + return; > + > last_block = VARRAY_TOP_TREE (cfun->ib_boundaries_block); > VARRAY_POP (cfun->ib_boundaries_block); > n = get_max_uid (); > > > On Tue, 2005-07-05 at 10:31 +0200, Laurent GUERBY wrote: > > This is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22212 > > and is the problem blocking Ada bootstrap on x86_64-linux, > > it would be great to move forward on this. > > > > Laurent > > > > On Thu, 2005-06-30 at 18:18 -0400, Richard Kenner wrote: > > > This function generates RTL from an expression to see how many RTL insns > > > it is. But this causes a problem compiling the Ada ACATS test cxa4006. > > > > > > The problem is when part of the expression has a location. In that > > > case, record_block_change is called and that relies on > > > cfun->ib_boundaries_block being set. But it isn't because we aren't > > > expanding stuff "for real". A kludge would be to test that field, but > > > what's the proper way? > > > > > > Also, seq_cost really should be looking at next_real_insn, not NEXT_INSN, > > > since any notes shouldn't be counted. > > > >