From 158b6d5109fad9d5f0c30693fa85041a1c621fe1 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Tue, 13 Oct 2026 14:31:45 +0300 Subject: [PATCH] Apply auto-vectorization to the loop in accum_sum_add() Rewrite the loop to a form that compilers are more likely to auto-vectorize, similar to commits 8870917623 and e3d41d08a1. Author: Xiangxin Zeng Reviewed-by: Quan Zongliang Reviewed-by: Junwang Zhao Discussion: https://www.postgresql.org/message-id/tencent_9DA409B9B2CAA6FFF985C638A28D35C73705@qq.com --- src/backend/utils/adt/numeric.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 7e38239354d..f4dfec56659 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -11909,8 +11909,6 @@ static void accum_sum_add(NumericSumAccum *accum, const NumericVar *val) { int32 *accum_digits; - int i, - val_i; int val_ndigits; NumericDigit *val_digits; @@ -11940,12 +11938,9 @@ accum_sum_add(NumericSumAccum *accum, const NumericVar *val) val_ndigits = val->ndigits; val_digits = val->digits; - i = accum->weight - val->weight; - for (val_i = 0; val_i < val_ndigits; val_i++) - { - accum_digits[i] += (int32) val_digits[val_i]; - i++; - } + accum_digits += accum->weight - val->weight; + for (int i = 0; i < val_ndigits; i++) + accum_digits[i] += (int32) val_digits[i]; accum->num_uncarried++; }