https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93246
--- Comment #12 from Richard Biener <rguenth at gcc dot gnu.org> --- Created attachment 47646 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47646&action=edit patch I am testing So I believe the actual issue is that the alias-set of 'bool' isn't a subset of the alias-set of 'Optional'. The attached fixes that (plus adds some optimization for subset recording). We're a bit back to repeatedly scanning type fields here but since we're copying subsets that wasn't really ever fixed truly. To avoid we'd need to hack another bit into the alias_set_entry as to whether it should behave the same as alias-set zero but do the usual subset recording for it.