Hi Anna,
thanks for your patch! I did not have to time look at this
(and I can't approve it), but here is something I noticed.
You have an error for jumping into a defer block
>
> @@ -4244,10 +4274,29 @@ check_earlier_gotos (tree label, struct c_label_vars*
> label_vars)
>
>if (
based on the technical specification n3589[1]
deferred statements execute at the end of the scope they're added on,
similar to the cleanup attribute, and they have much of the same
constraints as statement expressions, with added limitation that no
local jump shall jump over a defer statement, nor