Hi! On Tue, Sep 24, 2019 at 02:10:10AM -0400, Michael Meissner wrote: > +/* Return true if the address is a prefixed instruction that can be directly > + used in a memory instruction (i.e. using numeric offset or a PC-relative > + reference to a local symbol).
This could use a bit of a rewrite... "Return whether the address is valid for a prefixed memory instruction [...]"? > + /* Use the default pattern for loading up PC-relative addresses. */ > + if (TARGET_PCREL && mode == Pmode > + && (SYMBOL_REF_P (operands[1]) || LABEL_REF_P (operands[1]) > + || GET_CODE (operands[1]) == CONST)) Maybe this can use some predicate function? That will make the CONST stand out more as being the special case here, too? > + unsigned int r = reg_or_subregno (reg); > + > + /* If we have a pseudo, use the default instruction format. */ > + if (r >= FIRST_PSEUDO_REGISTER) > + return NON_PREFIXED_DEFAULT; Please use if (!HARD_REGISTER_NUM_P (r)) > + (eq_attr "type" "load,fpload,vecload") > + (if_then_else (and (eq_attr "indexed" "no") > + (eq_attr "update" "no") > + (match_test "prefixed_load_p (insn)")) > + (const_string "yes") > + (const_string "no")) It looks like prefixed_load_p and prefixed_store_p should test for "indexed" "no" and "update" "no" themselves? The code here simplifies a bit then. (blank line before the default case please). > + (const_string "no"))) Okay for trunk with those things fixed. Thanks! Segher