On Tue, 8 Dec 2015, Eric Botcazou wrote: > > 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. > > This one (access1) is admittedly border line and we can probably kludge > around > it in the front-end, but what about access2 and more generally pointer cycles?
Usually cycles happen through structure members and it might be that all other frontends have the pointed-to type incomplete. But the above recursion shouldn't apply for the structure case. Not sure how your other examples look like.