Hey Monks,
I have an XS module which has worked for years, but is giving me warnings with a new compiler:
Utils.xs:263:13: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]for (i = 0; i < n; i++) { HE *he = hv_iternext (hv); STRLEN key_len; >>> char *key = HePV (he, key_len);
The offending line is: "char *key = HePV (he, key_len);"
I've resolved some similar errors by changing the type of the LHS variable. But in this case, (char *) seems to be the absolutely correct type. Presumably it's because HePV is a macro that maps to a complicated nested ternary variable structure which maybe contains a subtle mix of types?
Can I do anything, other than perhaps just turning off warnings for this?
In reply to Calling HePV - "warning: dereferencing type-punned pointer will break strict-aliasing rules" by the.jxc
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |