• Tom Lane's avatar
    Make checksum_impl.h safe to compile with -fstrict-aliasing. · 8c62d9d1
    Tom Lane authored
    In general, Postgres requires -fno-strict-aliasing with compilers that
    implement C99 strict aliasing rules.  There's little hope of getting
    rid of that overall.  But it seems like it would be a good idea if
    storage/checksum_impl.h in particular didn't depend on it, because
    that header is explicitly intended to be included by external programs.
    We don't have a lot of control over the compiler switches that an
    external program might use, as shown by Michael Banck's report of
    failure in a privately-modified version of pg_verify_checksums.
    
    Hence, switch to using a union in place of willy-nilly pointer casting
    inside this file.  I think this makes the code a bit more readable
    anyway.
    
    checksum_impl.h hasn't changed since it was introduced in 9.3,
    so back-patch all the way.
    
    Discussion: https://postgr.es/m/1535618100.1286.3.camel@credativ.de
    8c62d9d1
checksum_impl.h 8.88 KB