On Wed, Jan 13, 2016 at 18:39:27 +0100, Martin Jambor wrote:
> * task.c (GOMP_PLUGIN_target_task_completion): Free
> firstprivate_copies.
Also this change caused 3 fails on intelmicemul:
FAIL: libgomp.c/target-32.c execution test
FAIL: libgomp.c/target-33.c execution test
FAIL: libgomp.c/target-34.c execution test
Because ttask->firstprivate_copies is uninitialized for
!GOMP_OFFLOAD_CAP_SHARED_MEM.
(gdb) p ttask->firstprivate_copies
$1 = (void *) 0x1
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
0x0000003b076800dc in free () from /lib64/libc.so.6
(gdb) bt
#0 0x0000003b076800dc in free () from /lib64/libc.so.6
#1 0x00007ffff7dda871 in GOMP_PLUGIN_target_task_completion (data=0x624ac0) at
gcc/libgomp/task.c:585
[...]
OK for trunk?
libgomp/
* task.c (gomp_create_target_task): Set firstprivate_copies to NULL.
diff --git a/libgomp/task.c b/libgomp/task.c
index 0f45c44..38d4e9b 100644
--- a/libgomp/task.c
+++ b/libgomp/task.c
@@ -683,6 +683,7 @@ gomp_create_target_task (struct gomp_device_descr *devicep,
ttask->state = state;
ttask->task = task;
ttask->team = team;
+ ttask->firstprivate_copies = NULL;
task->fn = NULL;
task->fn_data = ttask;
task->final_task = 0;
-- Ilya