> > > Bootstrapped/regtested x86_64-linux and also lto-bootstraped. Looks OK?
> > > 
> > >   * alias.c (alias_set_subset_of, alias_sets_conflict_p,
> > >   objects_must_conflict_p): Short circuit for !flag_strict_aliasing
> > >   (get_alias_set): Remove flag_strict_aliasing check.
> > >   (new_alias_set): Likewise.
> > 
> > Not clear whether it's this patch specifically or another one in the 
> > series, 
> > but the compiler now hangs on simple Ada code it used to compile instantly.
> > 
> > A couple of testcases is attached.  It looks like the compiler is now stuck 
> > in 
> > get_alias_set endlessly pushing references onto a vector.
> uhm, sorry. I will take a look.
The problem is with the type:
(gdb) p debug_tree (p)
 <pointer_type 0x7ffff6af02a0 type <pointer_type 0x7ffff6af02a0>
    sizes-gimplified public visited unsigned DI
    size <integer_cst 0x7ffff6ad7bb8 type <integer_type 0x7ffff6adb2a0 
bitsizetype> constant visited 64>
    unit size <integer_cst 0x7ffff6ad7bd0 type <integer_type 0x7ffff6adb1f8 
sizetype> constant visited 8>
    align 64 symtab 0 alias set -1 canonical type 0x7ffff6af02a0
    pointer_to_this <pointer_type 0x7ffff6af02a0>>

it is a recursive pointer to itself. Does this make sense in Ada?  If so we
will need to add a recursion guard into the loop and put the alias set into
voidptr_alias_set.  It more looks like a frontend bug to me - I can not think
of a use for this beast.

Honza

Reply via email to