https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114531
--- Comment #17 from Richard Sandiford <rsandifo at gcc dot gnu.org> --- I can see that it's useful to ask whether the current -O2 & -O3 inlining heuristics are making the right trade-off. But I think that's really a different issue from the one that is raised in the PR. (Unless we think that -O2 and -O3 should always have the same inlining heuristics henceforward, but that seems unlikely.) At the moment, -O3 is essentially -O2 + some -f options + some --param options. Users who want to pick & chose some of the -f options can do so, and can add them to stable build systems. Normally, obsolete -f options are turned into no-ops rather than removed. But users can't pick & choose the --params, and add them to stable build systems, because we reserve the right to remove --params without warning. So IMO, we should have an -f option that represents “the inlining parameters enabled by -O3”, whatever they happen to be for a given release. It's OK if the set is empty. For such a change, it doesn't really matter whether the current --params are the right ones. It just matters that the --params are the ones that we currently use. If the --params are changed later, the -f option and -O3 will automatically stay in sync.