From: vladlazar Date: Thu, 30 Aug 2018 09:30:49 +0000 (+0000) Subject: Enable underflow check in canonicalize_comparison. (PR86995) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4144665bf9d3c9099954f4410cfce8031314707;p=thirdparty%2Fgcc.git Enable underflow check in canonicalize_comparison. (PR86995) gcc/ 2018-08-30 Vlad Lazar PR middle-end/86995 * expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add if to_add is negative. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263973 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8865f31a43c8..e57a5921559a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-08-30 Vlad Lazar + + 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 PR middle-end/87053 diff --git a/gcc/expmed.c b/gcc/expmed.c index 0922029de809..caf29e889244 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -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;