The following patch fixes https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97870
The patch was successfully bootstrapped and tested on x86-64.
[PR97870] LRA: don't remove asm goto, just nullify it. gcc/ 2020-11-18 Vladimir Makarov <vmaka...@redhat.com> PR target/97870 * lra-constraints.c (curr_insn_transform): Do not delete asm goto with wrong constraints. Nullify it saving CFG. 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 %<asm%>"); 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; }