gcc -Wall -Wuninitialized is not throwing warning for uninitialized variable

Viewed 1136

gcc version - gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4

Compiling below code with -Wall -Wuninitialized is throwing warning as expected warning: ‘test’ is used uninitialized in this function [-Wuninitialized]

#include<stdio.h>
#include<stdlib.h>

void check (int test )
{
   printf("%d",test);
}

int
main()
{
   int test;
   check(test);
   return 0;
}

But compiling below code with -Wall -Wuninitialized is not throwing warning

#include<stdio.h>
#include<stdlib.h>

void check (int test )
{
   printf("%d",test);
}

int
main()
{
   int test;
   int condition = 0;

   if(condition == 27)
      test = 10;

   check(test);
   return 0;
}

Shouldn't it throw warning?. is it anyway related to compiler optimization?

2 Answers
Related