https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108439
--- Comment #5 from Georg Müller <georgmueller at gmx dot net> --- (In reply to Andrew Pinski from comment #4) > (In reply to Georg Müller from comment #1) > > Also, this compiler warning and execution error is removed by compiling with > > -fno-strict-aliasing, but again, this does not look right. > > Why do you think that is not correct? The aliasing violation causing > undefined behavior is obvious from the stores and loads that happen from the > source. main() only works with its own lb_key array. It is only modified before giving it to crap8() - it does not handle the internals of the hashing function. crap8() takes the key as a void pointer - no assumptions about what it gets and only converts void* to uint32_t*, what should be fine, or? Why is there a warning of lb_key not being initialized in the second example, even though its only member gets initialized twice? Via the same reference...