Hi,

this patch is a bit of a hack to make sure we do not emit calls to
libgomp run-time functions which are not available at the HSA GPU side,
such as run-time loop scheduling routines.  If we fail at the caller
side, we avoid issues with finalizer looking at calls to non-existing
functions.

Committed to the branch, queued for merge to trunk soon.
Thanks,

Martin

2016-10-03  Martin Jambor  <mjam...@suse.cz>

        * hsa-gen.c (gen_hsa_insns_for_call): Fail when encountering a
        GOMP builtin that we cannot process ourselves.
---
 gcc/hsa-gen.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c
index 8893a28..fd0dbcd 100644
--- a/gcc/hsa-gen.c
+++ b/gcc/hsa-gen.c
@@ -5972,7 +5972,15 @@ gen_hsa_insns_for_call (gimple *stmt, hsa_bb *hbb)
       break;
     default:
       {
-       gen_hsa_insns_for_direct_call (stmt, hbb);
+       tree name_tree = DECL_NAME (fndecl);
+       const char *s = IDENTIFIER_POINTER (name_tree);
+       size_t len = strlen (s);
+       if (len > 4 && (strncmp (s, "__builtin_GOMP_", 15) == 0))
+         HSA_SORRY_ATV (gimple_location (stmt),
+                        "support for HSA does not implement GOMP function %s",
+                        s);
+       else
+         gen_hsa_insns_for_direct_call (stmt, hbb);
        return;
       }
     }
-- 
2.10.0

Reply via email to