diff options
author | Martin Jambor <mjambor@suse.cz> | 2016-02-26 18:39:11 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2016-02-26 18:39:11 +0100 |
commit | 02108bb58c6905cc74eb4833067f39f92f5c9a6e (patch) | |
tree | 11be529ee492dca835c610beca455ad6cab45ebb | |
parent | 6b2cd37bd965bb51f2fd098c164f2441ad4f525c (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/hsa-gen.c | 9 |
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); |