The predicate checks if the operand is PLUS(symbol_ref, const_int), but
the match (match_operand 0/1) is not equal XEXP(op, 0/1). It should be
adjusted to use match_test and pass XEXP(op, 0/1) into the constraint
function.
gcc/ChangeLog:
* config/loongarch/predicates.md: Update ops.
(define_predicate "symbolic_pcrel_offset_operand"
(and (match_code "plus")
- (match_operand 0 "symbolic_pcrel_operand")
- (match_operand 1 "const_int_operand")))
+ (match_test "symbolic_pcrel_operand (XEXP (op, 0), mode)")
+ (match_test "const_int_operand (XEXP (op, 1), mode)")))
(define_predicate "mem_simple_ldst_operand"
(match_code "mem")