aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2016-02-26 18:39:11 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2016-02-26 18:39:11 +0100
commit02108bb58c6905cc74eb4833067f39f92f5c9a6e (patch)
tree11be529ee492dca835c610beca455ad6cab45ebb
parent6b2cd37bd965bb51f2fd098c164f2441ad4f525c (diff)
downloadgcc-02108bb58c6905cc74eb4833067f39f92f5c9a6e.zip
gcc-02108bb58c6905cc74eb4833067f39f92f5c9a6e.tar.gz
gcc-02108bb58c6905cc74eb4833067f39f92f5c9a6e.tar.bz2
[hsa] Fail in presence of atomic operations in private segment
2016-02-26 Martin Jambor <mjambor@suse.cz> * hsa-gen.c (gen_hsa_ternary_atomic_for_builtin): Fail in presence of atomic operations in private segment. From-SVN: r233748
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/hsa-gen.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7ce5fdc..de2189a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2016-02-26 Martin Jambor <mjambor@suse.cz>
+ * hsa-gen.c (gen_hsa_ternary_atomic_for_builtin): Fail in presence of
+ atomic operations in private segment.
+
+2016-02-26 Martin Jambor <mjambor@suse.cz>
+
* omp-low.c (grid_find_ungridifiable_statement): Store problematic
statements to wi->info. Also disallow omp simd constructs.
(grid_target_follows_gridifiable_pattern): Use wi.info to dump reason
diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c
index 8e2144c..7a7ec41 100644
--- a/gcc/hsa-gen.c
+++ b/gcc/hsa-gen.c
@@ -4557,8 +4557,13 @@ gen_hsa_ternary_atomic_for_builtin (bool ret_orig,
hsa_op_address *addr;
addr = get_address_from_value (gimple_call_arg (stmt, 0), hbb);
- /* TODO: Warn if addr has private segment, because the finalizer will not
- accept that (and it does not make much sense). */
+ if (addr->m_symbol && addr->m_symbol->m_segment == BRIG_SEGMENT_PRIVATE)
+ {
+ HSA_SORRY_AT (gimple_location (stmt),
+ "HSA does not implement atomic operations in private "
+ "segment");
+ return;
+ }
hsa_op_base *op = hsa_reg_or_immed_for_gimple_op (gimple_call_arg (stmt, 1),
hbb);