> > > 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