https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71991
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Jan Hubicka from comment #5) > Created attachment 43798 [details] > proposed fix > > > this patch simply while-lists some transitions of target flags for always > inline functions. It is ugly but I can't think of anything else which would > look safe. > Martin, you mentioned there was packages broken by this. Perhaps we can try > rebuild with this patch to see if all of the real world issues are solved? > If not, i guess we will need to decide case-by-case what is safe and what > not :( I think that patch is quite reasonable, with a couple of small nits LGTM s/alwyas/always/ put = on the next line in bool always_inline = and perhaps add int safe_mask = always_inline ? always_inline_safe_mask : 0; and use unconditionally (caller_opts->x_target_flags & ~safe_mask) != (callee_opts->x_target_flags & ~safe_mask) maybe use unsigned HOST_WIDE_INT instead of int for the masks, so when the masks grow beyond 32 bits we don't suddenly misbehave (or add gcc_chec king_assert that sizeof (callee_opts->x_target_flags) == sizeof (always_inline_safe_mask) The xen case should just be fixed in xen IMHO.