> This can be rewritten as > > void foo(int v) > { > { > int a; > capture(&a); > if (condition) > goto tail_position; > // do something with a > } > tail_position: > tailcall(v); > } > > or with 'do { ... if (...) break; ...} while (0)' when one prefers that to > goto.
This could get really ugly in more complex functions though with large scale transformation needed. Not sure that is something I would recommend to anyone. I don't know if the clang people considered such a case, but I can see a point for their semantics. -Andi