Off-topic: Why no compiler warning for this?

Gedare Bloom gedare at rtems.org
Wed Oct 15 13:43:49 UTC 2014


You might like to read http://blog.regehr.org/archives/963

-Gedare

On Wed, Oct 15, 2014 at 8:23 AM, Peter Dufault <dufault at hda.com> wrote:
> BTW: This macro is more broken than I thought.  eTPUB channels are 64 through 95.
>
> I suppose the reason there is no warning for the left shift that "obviously might overflow" is the same reason you don't get warnings about all multiplies - gcc isn't going to warn on all multiplies that might overflow.
>
> On Oct 15, 2014, at 04:14 , Peter Dufault <dufault at hda.com> wrote:
>
>> This is really a gcc question, but with Joel working to wipe out warnings and not wanting to start a thread on another list I'm asking here.  I stumbled on this sequence (obviously simplified) in my code.  The "XXX" indicates a restriction I intended to remove but didn't, and it would have broken new code I've been writing.  I noticed it before hitting the issue.
>>
>> The ETPU_CHANNEL_BIT macro is appropriate for the MPC5554 eTPUA with channels 0 through 31.  The macro is going to left-shift out of the unit32_t for the channels 32 through 63 in eTPUB (not sure why I bothered with the modulus, it's going to be totally broken for larger channel numbers).  Code:
>>
>> #include <inttypes.h>
>>
>> /* XXX Need a way to specify which eTPU the channel is in.
>> *     They happen to both be in A.
>> */
>> #define ETPU_CHANNEL_BIT(CHAN) (1 << ((CHAN) % 64))
>>
>> extern void foo(int chan);
>> extern void bar(uint32_t bit);
>>
>> void foo(int chan) {
>>    uint32_t bit = ETPU_CHANNEL_BIT(chan);
>>    bar(bit);
>> }
>>
>> Here is the optimization level and the compiler warnings I had in effect.  I even added -Wstrict-overflow=5 and -O4 hoping to get a warning without luck.
>>
>> -O2
>> -Wall
>> -Wcast-qual
>> -Werror
>> -Wmissing-prototypes
>> -Wpointer-arith
>>
>> Anyone else surprised?  Am I missing something obvious?  Any suggested additional warnings?
>>
>> Peter
>> -----------------
>> Peter Dufault
>> HD Associates, Inc.      Software and System Engineering
>>
>> _______________________________________________
>> users mailing list
>> users at rtems.org
>> http://lists.rtems.org/mailman/listinfo/users
>
> Peter
> -----------------
> Peter Dufault
> HD Associates, Inc.      Software and System Engineering
>
> _______________________________________________
> users mailing list
> users at rtems.org
> http://lists.rtems.org/mailman/listinfo/users



More information about the users mailing list