https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87843
--- Comment #12 from Richard Biener <rguenth at gcc dot gnu.org> --- OK, so in GCC 8 at least pointer-to-incomplete type gets the alias set of void * and that conflicts with any other pointer. So that works. Not sure what breaks here now...