https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94629
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ams at gcc dot gnu.org
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I have a few unimportant tweaks for this in my tree.
Anyway, e.g. in the GCN plugin, I wonder if we don't need:
diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index dc72c90962c..c733b8bfb18 100644
--- a/libgomp/plugin/plugin-gcn.c
+++ b/libgomp/plugin/plugin-gcn.c
@@ -1508,7 +1508,8 @@ init_hsa_context (void)
= GOMP_PLUGIN_malloc_cleared (hsa_context.agent_count
* sizeof (struct agent_info));
status = hsa_fns.hsa_iterate_agents_fn (assign_agent_ids, &agent_index);
- if (agent_index != hsa_context.agent_count)
+ if (status != HSA_STATUS_SUCCESS
+ || agent_index != hsa_context.agent_count)
{
GOMP_PLUGIN_error ("Failed to assign IDs to all GCN agents");
return false;
@@ -3473,7 +3474,8 @@ GOMP_OFFLOAD_init_device (int n)
status = hsa_fns.hsa_agent_iterate_regions_fn (agent->id,
get_kernarg_memory_region,
&agent->kernarg_region);
- if (agent->kernarg_region.handle == (uint64_t) -1)
+ if (status != HSA_STATUS_SUCCESS
+ || agent->kernarg_region.handle == (uint64_t) -1)
{
GOMP_PLUGIN_error ("Could not find suitable memory region for kernel "
"arguments");
@@ -3486,7 +3488,8 @@ GOMP_OFFLOAD_init_device (int n)
status = hsa_fns.hsa_agent_iterate_regions_fn (agent->id,
get_data_memory_region,
&agent->data_region);
- if (agent->data_region.handle == (uint64_t) -1)
+ if (status != HSA_STATUS_SUCCESS
+ || agent->data_region.handle == (uint64_t) -1)
{
GOMP_PLUGIN_error ("Could not find suitable memory region for device "
"data");
or if instead we should drop the "status = " for the cases where nothing checks
it. Andrew?