https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100897
--- Comment #2 from Leonard von Merzljak <l.v.merzljak at gmail dot com> --- (In reply to Iain Sandoe from comment #1) > for symmetric transfer to work without stack overflow, it relies on an > indirect tailcall. > > For some GCC targets indirect tail-calls are not available without some > additional support (see PR94794). > > I tried to reproduce this (with a test case I use regularly for this) on a > target that normally completes symmetric transfers successfully when the > optimisation level is > 1. (x86_64, darwin). > > The fail also occurs with my regular test case with -fsanitize=address - so, > it seems that the inclusion of the address sanitiser is preventing or > interfering with the tailcall. Note that there are also other known issues > with coroutines and the sanitizers (PR95137). Thank you for your comment. I tried it out and can confirm that I don't get a stack-overflow anymore if I omit -fsanitize=address and use an optimization level > 1. If the issues with coroutines and sanitizers are already known, then this bug report can be marked as resolved. Of course, it would be nice if the stack-overflow would not occur even when using an optimization level <= 1, but this probably does not qualify as a bug.