Use plain memset() in numeric.c, not MemSet and friends.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 8 Sep 2020 15:47:37 +0000 (11:47 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 8 Sep 2020 15:47:37 +0000 (11:47 -0400)
This essentially reverts a micro-optimization I made years ago,
as part of the much larger commit d72f6c750.  It's doubtful
that there was any hard evidence for it being helpful even then,
and the case is even more dubious now that modern compilers
are so much smarter about inlining memset().

The proximate reason for undoing it is to get rid of the type punning
inherent in MemSet, for fear that that may cause problems now that
we're applying additional optimization switches to numeric.c.
At the very least this'll silence some warnings from a few old
buildfarm animals.

(It's probably past time for another look at whether MemSet is still
worth anything at all, but I do not propose to tackle that question
right now.)

Discussion: https://postgr.es/m/CAJ3gD9evtA_vBo+WMYMyT-u=keHX7-r8p2w7OSRfXf42LTwCZQ@mail.gmail.com

src/backend/utils/adt/numeric.c

index dfd455fc748816ac588828c7f24cff8030727641..69d313dd52b1bfa9c77e7f780e8d6ce893df075b 100644 (file)
@@ -492,7 +492,7 @@ static void dump_var(const char *str, NumericVar *var);
             pfree(buf); \
    } while (0)
 
-#define init_var(v)        MemSetAligned(v, 0, sizeof(NumericVar))
+#define init_var(v)        memset(v, 0, sizeof(NumericVar))
 
 #define NUMERIC_DIGITS(num) (NUMERIC_HEADER_IS_SHORT(num) ? \
    (num)->choice.n_short.n_data : (num)->choice.n_long.n_data)