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