[Openmp-commits] [openmp] [NFC][OpenMP] Address coverity hit regarding unintended integer overflow (PR #133324)
Hansang Bae via Openmp-commits
openmp-commits at lists.llvm.org
Fri Oct 24 09:10:50 PDT 2025
https://github.com/hansangbae updated https://github.com/llvm/llvm-project/pull/133324
>From 7cfce9935d96c6a5787f98ad93377f30f8bab435 Mon Sep 17 00:00:00 2001
From: Hansang Bae <hansang.bae at intel.com>
Date: Tue, 18 Mar 2025 15:53:05 -0500
Subject: [PATCH] [NFC][OpenMP] Address coverity hit regarding unintended
integer overflow
---
openmp/runtime/src/kmp_collapse.cpp | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/openmp/runtime/src/kmp_collapse.cpp b/openmp/runtime/src/kmp_collapse.cpp
index f1bf04901dc7b..02246e1214c95 100644
--- a/openmp/runtime/src/kmp_collapse.cpp
+++ b/openmp/runtime/src/kmp_collapse.cpp
@@ -338,10 +338,11 @@ bool kmp_calc_one_iv_XX(const bounds_infoXX_template<T> *bounds,
if (start_with_lower_bound) {
// we moved to the next iteration on one of outer loops, should start
// with the lower bound here:
- temp = bounds->lb0 + bounds->lb1 * outer_iv;
+ temp = bounds->lb0 + static_cast<kmp_uint64>(bounds->lb1) * outer_iv;
} else {
auto iteration = iterations[ind];
- temp = bounds->lb0 + bounds->lb1 * outer_iv + iteration * bounds->step;
+ temp = bounds->lb0 + static_cast<kmp_uint64>(bounds->lb1) * outer_iv +
+ iteration * bounds->step;
}
// Now trim original iv according to its type:
@@ -831,14 +832,15 @@ kmp_calc_number_of_iterations_XX(const bounds_infoXX_template<T> *bounds,
kmp_loop_nest_iv_t iterations = 0;
if (bounds->comparison == comparison_t::comp_less_or_eq) {
- iterations =
- (static_cast<T>(original_ivs[ind]) - bounds->lb0 -
- bounds->lb1 * static_cast<T>(original_ivs[bounds->outer_iv])) /
- __kmp_abs(bounds->step);
+ iterations = (static_cast<T>(original_ivs[ind]) - bounds->lb0 -
+ static_cast<kmp_loop_nest_iv_t>(bounds->lb1) *
+ static_cast<T>(original_ivs[bounds->outer_iv])) /
+ __kmp_abs(bounds->step);
} else {
KMP_DEBUG_ASSERT(bounds->comparison == comparison_t::comp_greater_or_eq);
iterations = (bounds->lb0 +
- bounds->lb1 * static_cast<T>(original_ivs[bounds->outer_iv]) -
+ static_cast<kmp_loop_nest_iv_t>(bounds->lb1) *
+ static_cast<T>(original_ivs[bounds->outer_iv]) -
static_cast<T>(original_ivs[ind])) /
__kmp_abs(bounds->step);
}
More information about the Openmp-commits
mailing list