https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104327
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- So target specific option mismatch is caused by: static const struct default_options s390_option_optimization_table[] = { ... /* Use MVCLE instructions to decrease code size if requested. */ { OPT_LEVELS_SIZE, OPT_mmvcle, NULL, 1 }, ... which can be very likely handled in: static bool s390_can_inline_p (tree caller, tree callee) { ... if ((caller_opts->x_target_flags & ~(MASK_SOFT_FLOAT | MASK_HARD_DFP)) != (callee_opts->x_target_flags & ~(MASK_SOFT_FLOAT | MASK_HARD_DFP))) ret = false; @Andreas: What do you think?