https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78654

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It is mostly -fsanitize=alignment related on the serpent_generic.i, all the
other undefined sanitizers together cause largest frame of size 600 or so.
Also, if you use -fsanitize=undefined -fno-sanitize-recover=all then the
problem does not exist (608 bytes max frame size).
The problem with -fsanitize=alignment if recovery is required is that there is
huge amount of those (conditional) calls, if (some_pointer_is_unaligned)
__ubsan_handle_* (...); and that of course can't play well with register
allocation, because it needs to keep everything live across those calls, and as
those calls may clobber call used registers, that means having to push more
variables into memory, at least across those calls.

Reply via email to