re PR other/79250 (brig/brigfrontend/brig-to-generic.cc: two small problems)

* brigfrontend/brig-code-entry-handler.cc: fix address
expressions which refer only to offset 0, but nothing else.
* brigfrontend/brig-lane-inst-handler.cc: fix
activelanepermute_b64 HSAIL instruction.
* brigfrontend/brig-to-generic.cc: remove useless c_str()
call. Add missing va_end (). Fix PR79250

From-SVN: r245084
This commit is contained in:
Pekka Jääskeläinen 2017-02-01 10:06:13 +00:00 committed by Pekka Jääskeläinen
parent 405a740640
commit a0deb99254
4 changed files with 19 additions and 4 deletions

View File

@ -1,3 +1,12 @@
2016-02-01 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
* brigfrontend/brig-code-entry-handler.cc: fix address
expressions which refer only to offset 0, but nothing else.
* brigfrontend/brig-lane-inst-handler.cc: fix
activelanepermute_b64 HSAIL instruction.
* brigfrontend/brig-to-generic.cc: remove useless c_str()
call. Add missing va_end (). Fix PR79250.
2017-01-30 Jakub Jelinek <jakub@redhat.com>
* brigfrontend/brig-code-entry-handler.cc

View File

@ -456,9 +456,13 @@ brig_code_entry_handler::build_address_operand
/* We might have two const offsets in case of group or private arrays
which have the first offset to the incoming group/private pointer
arg, and the second one an offset to it. */
arg, and the second one an offset to it. It's also legal to have
a reference with a zero constant offset but no symbol. I've seen
codes that reference kernarg segment like this. Thus, if at this
point there is no address expression at all we assume it's an
access to offset 0. */
uint64_t offs = gccbrig_to_uint64_t (addr_operand.offset);
if (offs > 0)
if (offs > 0 || addr == NULL_TREE)
{
tree const_offset_2 = build_int_cst (size_type_node, offs);
if (addr == NULL_TREE)

View File

@ -71,7 +71,8 @@ brig_lane_inst_handler::operator () (const BrigBase *base)
itself or 'identity' in case use_identity is 1. */
tree cmp = build2 (EQ_EXPR, uint32_type_node,
build_int_cstu (uint32_type_node, 1), use_identity);
build_int_cstu (TREE_TYPE (use_identity), 1),
use_identity);
expr = build3 (COND_EXPR, TREE_TYPE (src), cmp, identity, src);
}

View File

@ -351,7 +351,7 @@ brig_to_generic::add_global_variable (const std::string &name, tree var_decl)
std::string host_def_var_name
= std::string (PHSA_HOST_DEF_PTR_PREFIX) + name;
tree host_def_var = global_variable (host_def_var_name.c_str ());
tree host_def_var = global_variable (host_def_var_name);
if (host_def_var == NULL_TREE)
return;
@ -681,6 +681,7 @@ call_builtin (tree pdecl, int nargs, tree rettype, ...)
{
delete[] types;
delete[] args;
va_end (ap);
return error_mark_node;
}
}