Silence spurious clang warnings

Silence clang warnings under --enable-expensive-hardening, including:
  + implicit truncation of 64 bit values to 32 bit;
  + const char assignment to self;
  + tautological compare; and
  + additional parentheses around equality tests. (gcc uses these to
    silence assignment, so clang warns when they're present in an
    equality test. But we need to use extra parentheses in macros to
    isolate them from other code).
Merge commit '13298d90a90dc62d21d38f910171c9b57a8f0273'
Re-run latest git trunnel to get fix from teor for #13577