Iain, this is the first of 2 patches I needed on top of your github WIP series. It is against GCC-10, but AFAICT will also be needed on trunk. We were not descending into the object operand of COMPONENT_REF exprs, and end up bitcopying a field out of a temporary, leading to badness. The breaking out of replace_unary_preamble is merely coincidental simplification. I also think one needs to descend the second operand of COMPOUND_EXPR, but when I did that badness happens, probably because of the artificial COMPOUND_EXPRs that get generated, which you mentioned? The bug manifested itself in Folly, and it was too difficult to extract a testcase. nathan -- Nathan Sidwell