Uma shankar <shankar...@gmail.com> writes:

> 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.
>
> ////////////////////
> #include <stdio.h>
> int Check(int *a)
> {
>    if (*a == 0)
>    {
>        printf("This is sample \n");
>    }
>    return *a;
> }
> int main()
> {
> int call;
> Check(&call);
> return 0;
> }
> /////////////////////
>
> 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 ?
>
> 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 ?   I mean bugs which occur only in C++ ,
> but not in C. ( Bugs which arise out of  C++ language features/syntax. ) .
> If so, I would  like to know.
>
> Elsewhere, someone pointed out to me that these are not  "bugs",  but occur
> due to  tradeoff in compiler against false positive warnings.  I am
> referring them
> as "bugs" only because  compiler hackers do so.


This message is also not appropriate for gcc@gcc.gnu.org, but is
appropriate for gcc-h...@gcc.gnu.org.

gcc is known to be inconsistent about when it issues warnings about
uninitialized variables.  This is not a good thing.  It is a
consequence of the fact that gcc issues those warnings based on the
implementation of different optimizations.

I'm not aware of any attempts to characterize precisely when gcc warns
and when it does not.  Any such characterization would have to be
updated for each new release in any case.

Ian

Reply via email to