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.