https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68173
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- I wonder what difference Index: gcc/gimplify.c =================================================================== --- gcc/gimplify.c (revision 229574) +++ gcc/gimplify.c (working copy) @@ -499,7 +499,7 @@ lookup_tmp_var (tree val, bool is_formal block, which means it will go into memory, causing much extra work in reload and final and poorer code generation, outweighing the extra memory allocation here. */ - if (!optimize || !is_formal || TREE_SIDE_EFFECTS (val)) + if (!is_formal || TREE_SIDE_EFFECTS (val)) ret = create_tmp_from_val (val); else { makes to this (at -O0). The comment is clearly very outdated but generated code quality at -O0 might still be worse?