https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64946
--- Comment #13 from rguenther at suse dot de <rguenther at suse dot de> --- On Thu, 2 Jun 2016, shiva0217 at gmail dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64946 > > Shiva Chen <shiva0217 at gmail dot com> changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > CC| |shiva0217 at gmail dot com > > --- Comment #12 from Shiva Chen <shiva0217 at gmail dot com> --- > It seems that the patch was dropped according to > https://gcc.gnu.org/ml/gcc-patches/2016-01/msg00610.html. > > Could we use TYPE_OVERFLOW_UNDEFINED to guard the transformation > like other place in gcc did ? You can use TYPE_OVERFLOW_WRAPS to guard it. > Any thoughts? Elsewhere I suggested to introduce a ABSU_EXPR (or overload ABS_EXPR) to make the result unsigned and thus effectively make ABSU_EXPR (INT_MIN) well-defined via doing the transform ABS_EXPR (x) -> (typeof x) ABSU_EXPR (x) which you then can narrow. Other than that only making signed types >= int have undefined overflow may be appealling as well.