https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89425

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-02-21
                 CC|                            |msebor at gcc dot gnu.org
            Summary|-Wabsolute-value warns in   |[9 Regression]
                   |dead code                   |-Wabsolute-value warns in
                   |                            |dead subexpressions
     Ever confirmed|0                           |1

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirmed. For reference, the -Wshift-count-overflow warning handles this
correctly (of course, if still fires when the dead code is in an if statement).
 Since there is a precedent/solution for avoiding these warnings in the C
front-end I suppose this bug qualifies as a 9 regression.

$ cat u.c && gcc -S -Wall -Wextra -m32 u.c
long f (long x)
{
  return sizeof (x) == 8 ? x >> 63 : x >> 31;   // no warning for unreachable
subexpression (good)
}

long g (long x)
{
  if (sizeof (x) == 8) return x >> 63; else return x >> 31;   //
-Wshift-count-overflow for unreachable statement
}

double h (double x)
{ 
  return sizeof (x) == sizeof (float) ? __builtin_fabsf (x) : __builtin_fabs
(x);   // -Wabsolute-value for unreachable subexpression
}

u.c: In function ‘g’:
u.c:8:33: warning: right shift count >= width of type [-Wshift-count-overflow]
    8 |   if (sizeof (x) == 8) return x >> 63; else return x >> 31;
      |                                 ^~
u.c: In function ‘h’:
u.c:13:41: warning: absolute value function ‘__builtin_fabsf’ given an argument
of type ‘double’ but has parameter of type ‘float’ which may cause truncation
of value [-Wabsolute-value]
   13 |   return sizeof (x) == sizeof (float) ? __builtin_fabsf (x) :
__builtin_fabs (x);   // -Wabsolute-value for unreachable subexpression
      |                                         ^~~~~~~~~~~~~~~

Reply via email to