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.

Reply via email to