On May 10, 2013, at 5:27 PM, Kenneth Zadeck <zad...@naturalbridge.com> wrote: > Assuming the patch has been tested on a public port, it is ok for commit.
Thanks. It turns out that my patch is necessary, but not sufficient, the code that exists must be left in place, as there are pre-existing test cases in the test suite that do depend upon the existing code. In the below code, I leave the existing code alone, and merely add the additional code. I reviewed the way the code gets here, and reasonably it can get here in either of the two ways, so having two checks is required. Here is the version I checked in.
2013-05-14 Mike Stump <mikest...@comcast.net> * web.c (union_match_dups): Also check DF_REF_REAL_LOC. Index: web.c =================================================================== --- web.c (revision 198796) +++ web.c (working copy) @@ -132,14 +132,22 @@ union_match_dups (rtx insn, struct web_e ref = type == OP_IN ? use_link : def_link; entry = type == OP_IN ? use_entry : def_entry; for (; *ref; ref++) - if (DF_REF_LOC (*ref) == recog_data.operand_loc[op]) - break; + { + if (DF_REF_LOC (*ref) == recog_data.operand_loc[op]) + break; + if (DF_REF_REAL_LOC (*ref) == recog_data.operand_loc[op]) + break; + } if (!*ref && type == OP_INOUT) { for (ref = use_link, entry = use_entry; *ref; ref++) - if (DF_REF_LOC (*ref) == recog_data.operand_loc[op]) - break; + { + if (DF_REF_LOC (*ref) == recog_data.operand_loc[op]) + break; + if (DF_REF_REAL_LOC (*ref) == recog_data.operand_loc[op]) + break; + } } gcc_assert (*ref); --------------