This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: "uninitialized variable" warning from compiler

Umashankar V.K. wrote:

>       I have few questions about  inbuilt mechanism of  gcc/g++  for
> warning about  uninitialized variable.
> I am interested in cases where  compiler is unable to warn.  I  am
> aware that all the known bugs about  warning-failure are
> mentioned  at  bugzilla
> a)  The compiler activates the warning mechanism only if  optimisation
> is enabled  at compilation time with -O option.
> For all the bugs that I went  through at bugzilla,  the failure is not
>  -O level dependent.  The warning-failure occurs  for  all levels of
> optimisation.
> So, I believe this is the general case.
> But then I came across the following  failure case.  This one  fails
> to  warn when compiled with any  level  below 3.
> With -O3,  gcc  is able to warn.   Can someone tell me which is the
> corresponding bug logged at bugzilla ?

I don't understand why you think this is a bug in gcc.  Inlining will
always reveal more about the data flow of a program.

> Are there any more such bugs which  disappear when compiled with
> specific -O level ?
> b)  Are there any known  "fail to do uninitialised-warning"   gcc bugs
> which are language-dependent ?

If there is an uninitialized variable, and gcc fails to notice, that is
not necessarily a bug.  For example,

extern void foo (int *p);

void bar
  int a;
  foo (&a);

  printf("%d\n", a);

We could fix gcc so that in every case where we couldn't prove that a variable
is initialized, we warned.  You'd have to put up with a lot of spurious "may
be used uninitialized" warnings.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]