re PR rtl-optimization/64682 (wrong code at -O2 and -O3 on x86_64-linux-gnu)
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 22 Jan 2015 00:35:44 +0000 (01:35 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 22 Jan 2015 00:35:44 +0000 (01:35 +0100)
PR rtl-optimization/64682
* combine.c (distribute_notes): When moving a death note for
a register that is set in the new I2, make sure to put it
before that new I2.

PR rtl-optimization/64682
* gcc.c-torture/execute/pr64682.c: New file.

From-SVN: r219981

gcc/ChangeLog
gcc/combine.c
gcc/testsuite/ChangeLog

index 756c37de8964ced3487183bf05baa83ca773d175..c292bfc1b8c0b8e6b2f051f9ea12ee2990c3212a 100644 (file)
@@ -1,3 +1,10 @@
+2015-01-21  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/64682
+       * combine.c (distribute_notes): When moving a death note for
+       a register that is set in the new I2, make sure to put it
+       before that new I2.
+
 2015-01-21  David Edelsohn  <dje.gcc@gmail.com>
 
        * config/rs6000/rs6000.c (rs6000_file_start): Use rs6000_isa_flags
index 597aa8035ff3ac3199c65ed4fa2758230806b51f..5c763b4a1d5c3f5680708d4e81baac3972437925 100644 (file)
@@ -13684,6 +13684,11 @@ distribute_notes (rtx notes, rtx_insn *from_insn, rtx_insn *i3, rtx_insn *i2,
                       || rtx_equal_p (XEXP (note, 0), elim_i0))
                break;
              tem_insn = i3;
+             /* If the new I2 sets the same register that is marked dead
+                in the note, the note now should not be put on I2, as the
+                note refers to a previous incarnation of the reg.  */
+             if (i2 != 0 && reg_set_p (XEXP (note, 0), PATTERN (i2)))
+               tem_insn = i2;
            }
 
          if (place == 0)
index f093c78841c1ad1688792856a360d23f453b3a05..2a54aff7fca4df441b73dad538a0a42be1431b03 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-21  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/64682
+       * gcc.c-torture/execute/pr64682.c: New file.
+
 2015-01-21  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/64511