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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Adding a hack where stmt.c (parse_input_constraint) so that it handles
case 'S':
the same as say case 'i':
fixes the test, so it is all about whether the expander and middle-end thinks
that "S" constraint allows_reg || allows_mem (right now both, ideally none).
So, to fix this, perhaps hack up genpreds.c, so that it generates another
function or two which returns true if the constraint can be easily proved not
to allow reg (or not to allow mem).
Say "S" is:
  (and (match_code "const,symbol_ref,label_ref")
       (match_test "aarch64_symbolic_address_p (op)")))
and so genpreds can conservatively assume match_test can return anything, but
match_code clearly doesn't satisfy a reg/subreg nor mem (requires something
other), so process_{input,output}_constraint should be able to safely set both
of those to false.

Reply via email to