]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Enable underflow check in canonicalize_comparison. (PR86995)
authorVlad Lazar <vlad.lazar@arm.com>
Thu, 30 Aug 2018 09:30:49 +0000 (09:30 +0000)
committerVlad Lazar <vladlazar@gcc.gnu.org>
Thu, 30 Aug 2018 09:30:49 +0000 (09:30 +0000)
gcc/
2018-08-30  Vlad Lazar  <vlad.lazar@arm.com>

PR middle-end/86995
* expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add
if to_add is negative.

From-SVN: r263973

gcc/ChangeLog
gcc/expmed.c

index 8865f31a43c817248291ba65a89cdf6915287f0c..e57a5921559a4b8d0e9df3cd4e57e91857e76f3a 100644 (file)
@@ -1,3 +1,9 @@
+2018-08-30  Vlad Lazar  <vlad.lazar@arm.com>
+
+       PR middle-end/86995
+       * expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add
+       if to_add is negative.
+
 2018-08-29  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
        PR middle-end/87053
index 0922029de8096e0d6df5c1ada00db4b48e911188..caf29e889244e5fae6089fa681b79edf4317391c 100644 (file)
@@ -6239,7 +6239,13 @@ canonicalize_comparison (machine_mode mode, enum rtx_code *code, rtx *imm)
      wrapping around in the case of unsigned values.  If any occur
      cancel the optimization.  */
   wi::overflow_type overflow = wi::OVF_NONE;
-  wide_int imm_modif = wi::add (imm_val, to_add, sgn, &overflow);
+  wide_int imm_modif;
+
+  if (to_add == 1)
+    imm_modif = wi::add (imm_val, 1, sgn, &overflow);
+  else
+    imm_modif = wi::sub (imm_val, 1, sgn, &overflow);
+
   if (overflow)
     return;