https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120608
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[15/16 regression] error: |[15 regression] error: |cannot tail-call: other |cannot tail-call: other |reasons when using address |reasons when using address |sanitizer with musttail |sanitizer with musttail --- Comment #23 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Fixed for 16+ so far. Regarding -O0 -fsanitize=address, that is just fine, what I was questioning is using the musttail attribute for -O0. I don't care about quality of generated code, but I do care that this particular call must be tail call optimized. It can be meaningful if the program would crash otherwise, even at -O0, because of too deep recursion. But if musttail is just used as an optimization rather than that the code will not really work without it (and in the protobuf case there are many architectures where the attribute is not used, so it must work even without it), then using it for -O0 looks quite pointless to me. So guarding it on __OPTIMIZE__ > 0 might make sense.