Skip to content

Commit c7ddd1f

Browse files
committed
[OpenMP] Fix reallocation of task successors in taskgraph mode
Ensure proper resizing and copying of the successors array when its capacity is exceeded. The previous implementation allocated a new array but did not copy the existing elements. This led to loss of successor data and incorrect task dependency tracking.
1 parent 106473c commit c7ddd1f

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

openmp/runtime/src/kmp_taskdeps.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,14 @@ static inline void __kmp_track_dependence(kmp_int32 gtid, kmp_depnode_t *source,
243243
}
244244
if (!exists) {
245245
if (source_info->nsuccessors >= source_info->successors_size) {
246-
source_info->successors_size = 2 * source_info->successors_size;
246+
kmp_uint old_size = source_info->successors_size;
247+
kmp_uint new_size = source_info->successors_size * 2;
247248
kmp_int32 *old_succ_ids = source_info->successors;
248-
kmp_int32 *new_succ_ids = (kmp_int32 *)__kmp_allocate(
249-
source_info->successors_size * sizeof(kmp_int32));
249+
kmp_int32 *new_succ_ids =
250+
(kmp_int32 *)__kmp_allocate(new_size * sizeof(kmp_int32));
251+
KMP_MEMCPY(new_succ_ids, old_succ_ids, old_size * sizeof(kmp_int32));
250252
source_info->successors = new_succ_ids;
253+
source_info->successors_size = new_size;
251254
__kmp_free(old_succ_ids);
252255
}
253256

0 commit comments

Comments
 (0)