http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57304

mrs at gcc dot gnu.org <mrs at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mrs at gcc dot gnu.org

--- Comment #1 from mrs at gcc dot gnu.org <mrs at gcc dot gnu.org> ---
DF_REF_LOC has:

  DF_REF_CLASS(REF) == DF_REF_REGULAR ?

in it, but

  DF_REF_REAL_LOC

does not.  :-(  So, does:

Index: web.c
===================================================================
--- web.c    (revision 198909)
+++ web.c    (working copy)
@@ -133,9 +133,10 @@ union_match_dups (rtx insn, struct web_e
       entry = type == OP_IN ? use_entry : def_entry;
       for (; *ref; ref++)
     {
-      if (DF_REF_LOC (*ref) == recog_data.operand_loc[op])
+      rtx *l = DF_REF_LOC (*ref);
+      if (l == recog_data.operand_loc[op])
         break;
-      if (DF_REF_REAL_LOC (*ref) == recog_data.operand_loc[op])
+      if (l && DF_REF_REAL_LOC (*ref) == recog_data.operand_loc[op])
         break;
     }

@@ -143,9 +144,10 @@ union_match_dups (rtx insn, struct web_e
     {
       for (ref = use_link, entry = use_entry; *ref; ref++)
         {
-          if (DF_REF_LOC (*ref) == recog_data.operand_loc[op])
+          rtx *l = DF_REF_LOC (*ref);
+          if (l == recog_data.operand_loc[op])
         break;
-          if (DF_REF_REAL_LOC (*ref) == recog_data.operand_loc[op])
+          if (l && DF_REF_REAL_LOC (*ref) == recog_data.operand_loc[op])
         break;
         }
     }

fix the problem?  This copies the style of the other uses of this macro, so, it
should be correct.

Reply via email to