https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127165
--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
MAX_RECOG_OPERANDS is set to 30 because of code in genconfig:
/* Allow at least 30 operands for the sake of asm constructs.
This magic number is also used in genpreds to determine
validity of a referenced operand when parsing dynamic register
filters. */
/* ??? We *really* ought to reorganize things such that there
is no fixed upper bound. */
max_recog_operands = 29; /* We will add 1 later. */
Increasing it will not work because aarch64 backend has:
config/aarch64/aarch64-early-ra.cc: static_assert (MAX_RECOG_OPERANDS <= 32,
"Operand mask is 32 bits");
Which needs extra work there too.
Really if you have more than 30 input/outputs to an inline-asm; it is time to
write the code directly in assembly instead ...