Yes, it's basically the idea in Duff's device. Protothreads (http://dunkels.com/adam/pt/) uses a pretty similar trick.
Ah, that's exactly the trick I was thinking of. I think I learned it from [1], but I'm pretty sure Protothreads predates that post. Thanks for the link!
1: https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
This was modeled on early Fortran where all local variables were static and it was trivial to implement persistent state machines.
To my eyes it also looked like a Duff's device which kept track of the successful state.
Switch on the last return point at the top of the function, and make all variables that need to persist between calls `static`.
(I've written it before, and I swear I didn't invent it... Maybe it's just a short skip from Duff's Device? Still, using it to pick up before the last return instead of after is new trick for me!)