If part way through gimplification you mark a variable as addressable, then you invalidate the gimplification of preceeding statements. At least for variables whose type satisfies is_gimple_reg_type.
Yeah, that's what I realized in working on this problem. Is it worth adding a flag to show that this is a gimple-generated variable so we can have an assert that we're not trying to mark it as addressable?