> 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

Reply via email to