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

--- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Testcase that only warns with -O3

int a, b, c;
void fn1() {
  int d[1];
  int e, n = a;
  for (; 0; n++)
    ;
  c = 1;
  while (c) {
    if (a)
      for (;;)
        ;
    while (d[0]) {
      e -= 0;
      if (b)
        break;
    }
  }
}

% gcc -c -Wall -Wextra -O2 parity_l8.i -Werror -Wfatal-errors
% gcc -c -Wall -Wextra -O3 parity_l8.i -Werror -Wfatal-errors
parity_l8.i: In function ‘fn1’:
parity_l8.i:12:13: error: ‘d[0]’ is used uninitialized in this function
[-Werror=uninitialized]
     while (d[0]) {
            ~^~~
compilation terminated due to -Wfatal-errors.
cc1: all warnings being treated as errors

% clang -c -Wall -Wextra -O3 parity_l8.i -Werror -Wfatal-errors
% clang --analyze -c -Wall -Wextra -O3 parity_l8.i -Werror -Wfatal-errors
parity_l8.i:4:14: warning: Value stored to 'n' during its initialization is
never read
  int e = 0, n = a;
             ^   ~
parity_l8.i:12:12: warning: Branch condition evaluates to a garbage value
    while (d[0]) {
           ^~~~
2 warnings generated.

Reply via email to