https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101156
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- OK, so the issue is we're calling gimplify_expr (...., false /*allow_ssa*/) on 'p--' and the gimplified sequence looks like the following on the pre_p sequence: p.0_1 = p; p = p.0_1 + 18446744073709551612; and the gimplify_expr result is just p.0_1. Then we do /* Avoid the extra copy if possible. */ *expr_p = create_tmp_reg (TREE_TYPE (name)); if (!gimple_nop_p (SSA_NAME_DEF_STMT (name))) gimple_set_lhs (SSA_NAME_DEF_STMT (name), *expr_p); release_ssa_name (name); but obviously that disregards that there's other uses of p.0_1 already. I suppose the above might be premature optimization but I'm going to gather some statistics on that I guess.