array subscript is below array bounds : false positive?

Andrew Haley aph@redhat.com
Wed Sep 16 10:53:00 GMT 2009


Peter A. Felvegi wrote:
> Andrew Haley wrote:
>> Peter A. Felvegi wrote:
>>> Ian Lance Taylor wrote:
>>
>>>> You can avoid this kind of thing by telling gcc that your assert
>>>> condition does not return.
>>>>
>>>> void assert_failure () __attribute__ ((noreturn, always_inline));
>>>> void assert_failure() { __asm__ ("int $0x03"); }
>>>> #define ASSERT(x) if (x) { } else { assert_failure(); }
>>> Now I got 'noreturn function does return' warning/error in
>>> assert_failure().
>>
>> void assert_failure() {
>>   for (;;)
>>     __asm__ ("int $0x03");
>> }
> 
> Remarks:

> 3) the for(;;) loop solves the above 'noreturn function does return'
> error, but it also prohibits continuing the prg from the debugger.

Correct, since this would result in undefined behaviour.  That's the idea.

Andrew.



More information about the Gcc-help mailing list