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

            Bug ID: 69230
           Summary: valid -Wmaybe-uninitialized suppressed by -O2
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

With -O2, versions of gcc going as far back as 4.5.3 all the way to recent
trunk (6.0) issues a -Wmaybe-uninitialized warning for the code below.  The bug
appears to be masking a large number of problems in glibc (see
https://sourceware.org/bugzilla/show_bug.cgi?id=19444).

$ (cc=$HOME/bin/gcc-5.1.0/bin/gcc; cat a.c && set -x && $cc -S -o/dev/null -O1
-Wall -Wextra a.c && $cc -O2 -S -Wall -Wextra -o/dev/null a.c)
int foo (int i)
{
    int j;

    switch (i & 2) {
    case 0: j = 1; break;
    case 1: j = 2; break;
    case 2: j = 3; break;
    case 3: j = 4; break;
    }
    return j + 1;
}
+ /home/msebor/bin/gcc-5.1.0/bin/gcc -S -o/dev/null -O1 -Wall -Wextra a.c
a.c: In function ‘foo’:
a.c:11:12: warning: ‘j’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
     return j + 1;
            ^
+ /home/msebor/bin/gcc-5.1.0/bin/gcc -O2 -S -Wall -Wextra -o/dev/null a.c

Reply via email to