Special case -TYPE_MIN_VALUE for flag_wrapv in operator_abs::op1_range.
authorAndrew MacLeod <amacleod@redhat.com>
Tue, 17 Aug 2021 08:50:56 +0000 (10:50 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Tue, 17 Aug 2021 09:39:15 +0000 (11:39 +0200)
commit891bdbf2b0432b4aa3d3e76923617fcb4fd33cf6
treec93c4b18b2ba3f502656545506092147ff369ec8
parent3ed779689631ff8f398dcde06d5efa2a3c43ef27
Special case -TYPE_MIN_VALUE for flag_wrapv in operator_abs::op1_range.

With flag_wrapv, -TYPE_MIN_VALUE = TYPE_MIN_VALUE which is
unrepresentable.  We currently special case this in the ABS folding
routine, but are missing similar treatment in operator_abs::op1_range.

Tested on x86-64 Linux.

PR tree-optimization/101938

gcc/ChangeLog:

* range-op.cc (operator_abs::op1_range): Special case
-TYPE_MIN_VALUE for flag_wrapv.

gcc/testsuite/ChangeLog:

* gcc.dg/pr101938.c: New test.
gcc/range-op.cc
gcc/testsuite/gcc.dg/pr101938.c [new file with mode: 0644]