https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121391
--- Comment #2 from Stefan Schulze Frielinghaus <stefansf at gcc dot gnu.org> --- We need to stop error checking in case of an error node operand. So something along the lines diff --git a/gcc/stmt.cc b/gcc/stmt.cc index 7942aa3e484..6c4b35c52c3 100644 --- a/gcc/stmt.cc +++ b/gcc/stmt.cc @@ -388,7 +388,7 @@ parse_output_constraint (const char **constraint_p, int operand_num, error ("hard register constraints are only supported while using LRA"); return false; } - if (reg_info) + if (reg_info && reg_info->operand != error_mark_node) { int regno = decode_hard_reg_constraint (p); if (regno < 0) @@ -609,7 +609,7 @@ parse_input_constraint (const char **constraint_p, int input_num, error ("hard register constraints are only supported while using LRA"); return false; } - if (reg_info) + if (reg_info && reg_info->operand != error_mark_node) { int regno = decode_hard_reg_constraint (constraint + j); if (regno < 0) should do it. Let me rethink this again and I will post a patch.