From 9105757a59b890194ebf5b4fcbacd58db34ef332 Mon Sep 17 00:00:00 2001 From: "Vladimir N. Makarov" Date: Fri, 5 Mar 2021 11:41:25 -0500 Subject: [PR99378] LRA: Skip decomposing address for asm insn operand with unknown constraint. Function get_constraint_type returns CT__UNKNOWN for empty constraint and CT_FIXED_FORM for "X". So process_address_1 skipped decompose_mem_address only for "X" constraint. To do the same for empty constraint, skip decompose_mem_address for CT__UNKNOWN. gcc/ChangeLog: PR target/99378 * lra-constraints.c (process_address_1): Skip decomposing address for asm insn operand with unknown constraint. gcc/testsuite/ChangeLog: PR target/99378 * gcc.target/i386/pr99123-2.c: New. --- gcc/lra-constraints.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gcc/lra-constraints.c') diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index 51acf7f..9253690 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -3450,8 +3450,9 @@ process_address_1 (int nop, bool check_only_p, i.e. bcst_mem_operand in i386 backend. */ else if (MEM_P (mem) && !(INSN_CODE (curr_insn) < 0 - && get_constraint_type (cn) == CT_FIXED_FORM - && constraint_satisfied_p (op, cn))) + && (cn == CONSTRAINT__UNKNOWN + || (get_constraint_type (cn) == CT_FIXED_FORM + && constraint_satisfied_p (op, cn))))) decompose_mem_address (&ad, mem); else if (GET_CODE (op) == SUBREG && MEM_P (SUBREG_REG (op))) -- cgit v1.1