OSDN Git Service

* regcprop.c (copyprop_hardreg_forward_1): Update recog_data
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Oct 2011 02:14:32 +0000 (02:14 +0000)
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Oct 2011 02:14:32 +0000 (02:14 +0000)
after validate_change wipes it out.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180284 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/regcprop.c

index 3b5fc23..a76979d 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-20  Mike Stump  <mikestump@comcast.net>
+
+       * regcprop.c (copyprop_hardreg_forward_1): Update recog_data
+       after validate_change wipes it out.
+
 2011-10-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
        * config/spu/spu.md ("vec_permv16qi"): Reduce selector modulo 32
index aca005d..ad92a64 100644 (file)
@@ -840,6 +840,12 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
                  changed = true;
                  goto did_replacement;
                }
+             /* We need to re-extract as validate_change clobbers
+                recog_data.  */
+             extract_insn (insn);
+             if (! constrain_operands (1))
+               fatal_insn_not_found (insn);
+             preprocess_constraints ();
            }
 
          /* Otherwise, try all valid registers and see if its valid.  */
@@ -862,6 +868,12 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
                      changed = true;
                      goto did_replacement;
                    }
+                 /* We need to re-extract as validate_change clobbers
+                    recog_data.  */
+                 extract_insn (insn);
+                 if (! constrain_operands (1))
+                   fatal_insn_not_found (insn);
+                 preprocess_constraints ();
                }
            }
        }