https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65689
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 35258 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35258&action=edit gcc5-pr65689.patch Untested fix. For aarch64, there are lots of constraints determined by this patch to not allow either reg or mem: S, Y, Ush, Uss, Usn, Usd, Usf, Ui3, Up3, Ufc, Dn, Dh, Dq, Dl, Dr, Dz, Dd and then V, <, > determined as only *allows_mem. But '<' and '>' are already handled in process_*_constraint earlier, so it is just V. The rest are determined (conservatively) to allow either. On x86_64, G is determined to allow neither, V, <, > similarly to aarch64 to only *allows_mem, the rest maybe both.