https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100685
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- IIRC we changed behavior so that optimize appends to the global options, thus optimize("no-tree-pre") gives you -O2 -fno-tree-pre instead of -O0 -fno-tree-pre. But -O2 -O1 should still get you -O1 and thus the same as -O1 stand-alone. So sth is broken it seems? push_options simply haves the old state for restore, it does not stash away previous applied options.