Skip to content

Commit b767dba

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 b767dba

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

openmp/runtime/src/kmp_taskdeps.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,14 @@ static inline void __kmp_track_dependence(kmp_int32 gtid, kmp_depnode_t *source,
244244
if (!exists) {
245245
if (source_info->nsuccessors >= source_info->successors_size) {
246246
source_info->successors_size = 2 * source_info->successors_size;
247+
kmp_uint old_size = source_info->successors_size;
248+
kmp_uint new_size = source_info->successors_size * 2;
247249
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));
250+
kmp_int32 *new_succ_ids =
251+
(kmp_int32 *)__kmp_allocate(new_size * sizeof(kmp_int32));
252+
KMP_MEMCPY(new_succ_ids, old_succ_ids, old_size * sizeof(kmp_int32));
250253
source_info->successors = new_succ_ids;
254+
source_info->successors_size = new_size;
251255
__kmp_free(old_succ_ids);
252256
}
253257

0 commit comments

Comments
 (0)