On Sat, 14 Jun 2014, Eric Botcazou wrote:

> > 2014-06-13  Richard Biener  <rguent...@suse.de>
> > 
> >     * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
> >     Rewrite to propagate the VN result into all uses where
> >     possible and to remove stmts becoming dead because of that.
> >     (eliminate): Generalize stmt removal handling, remove in
> >     reverse dominator order to support proper debug stmt
> >     generation.  Update stmts before removing stmts.
> >     * tree-ssa-propagate.c (propagate_tree_value): Remove
> >     bogus assert.
> 
> This breaks Ada bootstrap with non-standard build options (-gnatpgn).  I have 
> attached a reduced testcase, but you need the Ada SJLJ scheme to see it so 
> the 
> following procedure can be used:
> 
>  1. Put p.ad[bs] in $(BUILDDIR)
>  2. Do "gcc/gnat1 -quiet p.adb -I $(SRCDIR)/gcc/ada -I gcc/ada -O2 -gnatn"
> 
> eric@polaris:~/build/gcc/native> gcc/gnat1 -quiet p.adb -I ~/svn/gcc/gcc/ada -
> I gcc/ada -O2 -gnatn
> +===========================GNAT BUG DETECTED==============================+
> | 4.10.0 20140614 (experimental) [trunk revision 211664] (x86_64-suse-linux) 
> GCC error:|
> | in forward_edge_to_pdom, at tree-ssa-dce.c:1042                          |
> | Error detected around /home/eric/svn/gcc/gcc/ada/sinfo.adb:6010:8        |

Seems to be an issue with the assert

1041              /* The resulting PHI if not dead can only be degenerate.  
*/
1042              gcc_assert (degenerate_phi_p (phi));

and the fact that the PHI is abnormal and thus while it really _is_
degenerate value-wise, we can't easily prove it (by that predicate).

Not sure what to do here but adjust it to

  gcc_assert (degenerate_phi_p (phi) || SSA_NAME_OCCURS_IN_ABNORMAL_PHI 
(gimple_phi_result (phi)));

So - can you check if bootstrap works with that?

Thanks,
Richard.

Reply via email to