]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
regcprop.c (copyprop_hardreg_forward_1): Update recog_data after validate_change...
authorMike Stump <mikestump@comcast.net>
Fri, 21 Oct 2011 02:14:32 +0000 (02:14 +0000)
committerMike Stump <mrs@gcc.gnu.org>
Fri, 21 Oct 2011 02:14:32 +0000 (02:14 +0000)
* regcprop.c (copyprop_hardreg_forward_1): Update recog_data
after validate_change wipes it out.

From-SVN: r180284

gcc/ChangeLog
gcc/regcprop.c

index 3b5fc23e90633670aaded7e45e6c3b9ed672a71a..a76979d8f753bfbf5ec2146438162235013f2934 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 aca005d7afd9ad778d1e1d5b13a2e7ef93c071e7..ad92a64cc29873a5cfb60f7d99711a96cb952376 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 ();
                }
            }
        }