Uninitialized integers and warnings
Ian Lance Taylor
iant@google.com
Wed Sep 4 15:19:00 GMT 2013
On Wed, Sep 4, 2013 at 8:07 AM, Umesh Kalappa <umesh.kalappa0@gmail.com> wrote:
> Hi Ian,
> For the below case, when I compile with O3 on X86.Gcc 4.6.3 emits asm with
> ret 1.
>
> Which I feel incorrect.
When p == 0 the program has undefined behaviour, so there is no
incorrect result in that case. When p != 0 the function always
returns 1. So it is perfectly reasonable for this function to be
compiled to always return 1.
It's a bug that there is no warning when using -Wuninitialized, but it
is not a bug to compile the function to always return 1.
Ian
> On Wednesday, September 4, 2013, Ian Lance Taylor <iant@google.com> wrote:
>> On Wed, Sep 4, 2013 at 6:40 AM, Kirill Tkhai <tkhai@yandex.ru> wrote:
>>>
>>> the following example compiles without warnings:
>>>
>>> $ cat a.c
>>> int func (int p)
>>> {
>>> int x;
>>> if (p != 0)
>>> x = 1;
>>> return x;
>>> }
>>>
>>> $ gcc -c a.c -Wall
>>> (no messages)
>>>
>>> Is there no error? Why compiler doesn't print a error
>>> about uninitialized variable?
>>>
>>> I saw many pieces like this in GNU software. Does
>>> it mean that it is a de-facto standard and gcc won't warn
>>> about code like this in the future?
>>
>> This question would be more appropriate on the mailing list
>> gcc-help@gcc.gnu.org. The mailing list gcc@gcc.gnu.org is for
>> discussions about the development of GCC itself. Please take any
>> followups to gcc-help. Thanks.
>>
>> That said, I think this case is a bug. Please report it following the
>> instructions at http://gcc.gnu.org/bugs. Thanks.
>>
>> Ian
>>
More information about the Gcc
mailing list