From: jamborm Date: Fri, 26 Feb 2016 17:39:11 +0000 (+0000) Subject: [hsa] Fail in presence of atomic operations in private segment X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=63ee769cb1157bf02a5ad1083841fba29de7dd4b;p=thirdparty%2Fgcc.git [hsa] Fail in presence of atomic operations in private segment 2016-02-26 Martin Jambor * hsa-gen.c (gen_hsa_ternary_atomic_for_builtin): Fail in presence of atomic operations in private segment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233748 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ce5fdcc2954..de2189a84078 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-02-26 Martin Jambor + + * hsa-gen.c (gen_hsa_ternary_atomic_for_builtin): Fail in presence of + atomic operations in private segment. + 2016-02-26 Martin Jambor * omp-low.c (grid_find_ungridifiable_statement): Store problematic diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c index 8e2144c339a3..7a7ec41ab801 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);