This is introduced by r258390 and fixed by r258415. I am checking in this patch to add a testcase for PR 84799.
H.J. --- * gcc.dg/pr84799.c: New test. --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/pr84799.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr84799.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c13747ad1b6..c7193069550 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-03-12 H.J. Lu <hongjiu...@intel.com> + + * gcc.dg/pr84799.c: New test. + 2018-03-12 Richard Biener <rguent...@suse.de> PR tree-optimization/84803 diff --git a/gcc/testsuite/gcc.dg/pr84799.c b/gcc/testsuite/gcc.dg/pr84799.c new file mode 100644 index 00000000000..2b3a48f9e34 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr84799.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-O" } */ + +int a, g; +long b, f; +short c, d, e; + +static void fn1 () +{ + if (a) + { + long i = 5, j = b / i | c; + int k = b % (d % i) & j; + short l = ~f % (-d / j ^ -e), m = e << (d - l); + if (k) + m = d; + i = d | (i & b); + g = (c | ~f) % i + l; + e = (c - f) & e; + d = m; + } +} + +int main () +{ + b |= 1; + fn1 (); + return 0; +} -- 2.14.3