From 2f2709e691148160e4f88090eaf48d3e4915b0e4 Mon Sep 17 00:00:00 2001 From: "Vladimir N. Makarov" Date: Wed, 18 Nov 2020 10:07:56 -0500 Subject: [PATCH] [PR97870] LRA: don't remove asm goto, just nullify it. gcc/ 2020-11-18 Vladimir Makarov PR target/97870 * lra-constraints.c (curr_insn_transform): Do not delete asm goto with wrong constraints. Nullify it saving CFG. --- gcc/lra-constraints.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index f034c7749e9..80ca1e06e31 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -4104,9 +4104,18 @@ curr_insn_transform (bool check_only_p) error_for_asm (curr_insn, "inconsistent operand constraints in an %"); lra_asm_error_p = true; - /* Avoid further trouble with this insn. Don't generate use - pattern here as we could use the insn SP offset. */ - lra_set_insn_deleted (curr_insn); + if (! JUMP_P (curr_insn)) + { + /* Avoid further trouble with this insn. Don't generate use + pattern here as we could use the insn SP offset. */ + lra_set_insn_deleted (curr_insn); + } + else + { + lra_invalidate_insn_data (curr_insn); + ira_nullify_asm_goto (curr_insn); + lra_update_insn_regno_info (curr_insn); + } return true; }