But you have to give this cleanup jump label a different name for every function.

You don't. Labels are local to functions in C.