]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/71554 (Miscompilation of __builtin_mul_overflow on i686)
authorJakub Jelinek <jakub@redhat.com>
Thu, 16 Jun 2016 11:38:24 +0000 (13:38 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 16 Jun 2016 11:38:24 +0000 (13:38 +0200)
PR target/71554
* config/i386/i386.md (setcc + movzbl peephole2): Use reg_set_p.
(setcc + and peephole2): Likewise.

Backported from mainline
2015-04-29  Uros Bizjak  <ubizjak@gmail.com>

* config/i386/i386.md (setcc+movzbl peephole2): Check also clobbered
reg.
(setcc+andl peephole2): Ditto.

From-SVN: r237522

gcc/ChangeLog
gcc/config/i386/i386.md

index 6ec0552202b846f744d1bd90252920af105226be..b978c2c04334855534fc2a068f7fa30cd1cadd13 100644 (file)
@@ -1,3 +1,16 @@
+2016-06-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/71554
+       * config/i386/i386.md (setcc + movzbl peephole2): Use reg_set_p.
+       (setcc + and peephole2): Likewise.
+
+       Backported from mainline
+       2015-04-29  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (setcc+movzbl peephole2): Check also clobbered
+       reg.
+       (setcc+andl peephole2): Ditto.
+
 2016-06-13  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/71505
index ea02e64e818a1ce654302ae40d966043fbcc3175..97a4f108712de9e06afa8c4f7039d96830fa8260 100644 (file)
        (zero_extend (match_dup 1)))]
   "(peep2_reg_dead_p (3, operands[1])
     || operands_match_p (operands[1], operands[3]))
-   && ! reg_overlap_mentioned_p (operands[3], operands[0])"
+   && ! reg_overlap_mentioned_p (operands[3], operands[0])
+   && ! reg_set_p (operands[3], operands[4])"
   [(parallel [(set (match_dup 5) (match_dup 0))
              (match_dup 4)])
    (set (strict_low_part (match_dup 6))
              (clobber (reg:CC FLAGS_REG))])]
   "(peep2_reg_dead_p (3, operands[1])
     || operands_match_p (operands[1], operands[3]))
-   && ! reg_overlap_mentioned_p (operands[3], operands[0])"
+   && ! reg_overlap_mentioned_p (operands[3], operands[0])
+   && ! reg_set_p (operands[3], operands[4])"
   [(parallel [(set (match_dup 5) (match_dup 0))
              (match_dup 4)])
    (set (strict_low_part (match_dup 6))