* web.c (union_match_dups): Also check DF_REF_REAL_LOC.
authorMike Stump <mikestump@comcast.net>
Tue, 14 May 2013 17:43:57 +0000 (17:43 +0000)
committerMike Stump <mrs@gcc.gnu.org>
Tue, 14 May 2013 17:43:57 +0000 (17:43 +0000)
From-SVN: r198896

gcc/ChangeLog
gcc/web.c

index 58e0f95508cea84f7c9d8a5eef264d877cd6708a..62255a36537407121159b162da9ab6b98e746afc 100644 (file)
@@ -1,3 +1,7 @@
+2013-05-14  Mike Stump  <mikestump@comcast.net>
+
+       * web.c (union_match_dups): Also check DF_REF_REAL_LOC.
+
 2013-05-14  Steven Bosscher  <steven@gcc.gnu.org>
 
        * resource.h (struct resources): Remove unch_memory member.
index d09d1d51f72592c95b50bbbde90255b2c7db3c46..7f667db2cc535b87c496e46a47bb1b657ea9aa9a 100644 (file)
--- a/gcc/web.c
+++ b/gcc/web.c
@@ -132,14 +132,22 @@ union_match_dups (rtx insn, struct web_entry *def_entry,
       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);