On 7/9/19 10:39 AM, Segher Boessenkool wrote: > On Mon, Jul 08, 2019 at 07:18:00PM -0500, William Tambe wrote: >> On Sun, Jul 7, 2019 at 12:45 PM Segher Boessenkool >> <segher@xxxxxxxxxxxxxxxxxxx> wrote: >>> Yup. And "A" is defined as being a mem, which makes no sense, and its >>> comment says it is a "memory address". >> >> If not much effort, could you please provide the change I should make >> to my define_contraint ? >> >> I tried the following two without success: >> >> (define_constraint "A" >> "A memory address." >> (ior (match_test "GET_CODE (XEXP (op, 0)) == SYMBOL_REF") >> (match_test "GET_CODE (XEXP (op, 0)) == LABEL_REF") >> (match_test "GET_CODE (XEXP (op, 0)) == CONST"))) > > Something like this. > > (define_constraint "A" > "A memory address." > (match_code "const,symbol_ref,label_ref")) > > Look at other ports? aarch64's "S" looks a lot like this, for example. Also note that memory addressing is largely influenced by go-if-legitimate-address. jeff