Patchwork web ICEs on subreg

login
register
mail settings
Submitter Mike Stump
Date May 10, 2013, 10:52 p.m.
Message ID <DA76E8AE-F19D-4C13-B743-36DE8A5BA139@comcast.net>
Download mbox | patch
Permalink /patch/243089/
State New
Headers show

Comments

Mike Stump - May 10, 2013, 10:52 p.m.
On May 10, 2013, at 3:29 PM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
> Your web.c patch looks correct to me, but I can't approve it.

Thanks.  Now that you point out the DF accessor, it all makes perfect sense.  :-)  I've fixed one other instance that has to be as wrong for all the same reasons.  Though my port doesn't trip the other case from the test suite, if my port used an IN/OUT, I bet I could make it trip it.

Ok?
2013-05-10  Mike Stump  <mikestump@comcast.net>

	* web.c (union_match_dups): Use DF_REF_REAL_LOC instead.

Doing diffs in web.c.~1~:
--------------
Kenneth Zadeck - May 11, 2013, 12:27 a.m.
Assuming the patch has been tested on a public port, it is ok for commit.

kenny
On 05/10/2013 06:52 PM, Mike Stump wrote:
> On May 10, 2013, at 3:29 PM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
>> Your web.c patch looks correct to me, but I can't approve it.
> Thanks.  Now that you point out the DF accessor, it all makes perfect sense.  :-)  I've fixed one other instance that has to be as wrong for all the same reasons.  Though my port doesn't trip the other case from the test suite, if my port used an IN/OUT, I bet I could make it trip it.
>
> Ok?
>
>
>

Patch

--- web.c.~1~	2013-01-14 10:39:36.000000000 -0800
+++ web.c	2013-05-10 15:45:02.000000000 -0700
@@ -132,13 +132,13 @@  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])
+	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])
+	    if (DF_REF_REAL_LOC (*ref) == recog_data.operand_loc[op])
 	      break;
 	}