I'm not sure what the problem is. My proposal is to use some kind of LET_EXPR, which takes a declaration and two expressions. It seems plausible to me that any place that creates a SAVE_EXPR could use a LET_EXPR instead. So how are you changing things? You're replacing SAVE_EXPR with LET_EXPR with similar semantics.