strict alias analysis question

Manfred Spraul manfred@colorfullife.com
Tue Oct 14 17:02:00 GMT 2003


Hi,

the latest gcc versions generate warnings about potentially dangerous 
pointer casts if strict alias analysis is enabled.
Right now two groups of  warnings are generated: several from the 
inlined MemSet macros:

#define MemSetLoop(start, val, len) \
        do \
        { \
                int32 * _start = (int32 *) (start); \
                int32 * _stop = (int32 *) ((char *) \
                            _start + (Size) (len)); \
        \
                while (_start < _stop) \
                        *_start++ = 0; \
        } while (0)

And a few from structures with common headers:

struct hdr {
    ...;
}
struct b {
    struct hdr info;
    ...
};

void handler(struct hdr* parm)
{
    struct b* ptr = (struct b*)parm;
}

Does MemSet break the rules for strict alias analysis? And what about 
manual base classes? The actual use it a bit longer (the cast to (Node 
*) in src/backend/commands/tablecmds.c generates the warning).

--
    Manfred



More information about the Gcc mailing list