When the agent reports a device ISA we don't support avoid hitting
an assert, instead report the raw integers as error.  I'm not sure
whether -1 is special as I didn't figure where that field is
initialized.  But I guess since agents are not rejected upfront
when registering them I might be able to force execution to an
unsupported one.

An alternative would maybe to change get_agent_info () to return NULL
for unsupported ISAs?

Tested on x86_64-unknown-linux-gnu -> amdgcn-hsa with gfx1060

OK?

Thanks,
Richard.

libgomp/
        * plugin/plugin-gcn.c (isa_matches_agent): Avoid asserting we
        only get supported device ISAs.  Report raw numbers when not.
---
 libgomp/plugin/plugin-gcn.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index db28781dedb..d8c3907c108 100644
--- a/libgomp/plugin/plugin-gcn.c
+++ b/libgomp/plugin/plugin-gcn.c
@@ -2459,13 +2459,15 @@ isa_matches_agent (struct agent_info *agent, Elf64_Ehdr 
*image)
       char msg[120];
       const char *agent_isa_s = isa_hsa_name (agent->device_isa);
       const char *agent_isa_gcc_s = isa_gcc_name (agent->device_isa);
-      assert (agent_isa_s);
-      assert (agent_isa_gcc_s);
-
-      snprintf (msg, sizeof msg,
-               "GCN code object ISA '%s' does not match GPU ISA '%s'.\n"
-               "Try to recompile with '-foffload-options=-march=%s'.\n",
-               isa_s, agent_isa_s, agent_isa_gcc_s);
+      if (agent_isa_s && agent_isa_gcc_s)
+       snprintf (msg, sizeof msg,
+                 "GCN code object ISA '%s' does not match GPU ISA '%s'.\n"
+                 "Try to recompile with '-foffload-options=-march=%s'.\n",
+                 isa_s, agent_isa_s, agent_isa_gcc_s);
+      else
+       snprintf (msg, sizeof msg,
+                 "GCN code object ISA '%s' (%d) does not match GPU ISA %d.\n",
+                 isa_s, isa_field, agent->device_isa);
 
       hsa_error (msg, HSA_STATUS_ERROR);
       return false;
-- 
2.35.3

Reply via email to