mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-22 22:01:20 +08:00
[BRIGFE] Fix crash with calls with more than 4 args.
Also fix a misexecution issue with kernels that have both unexpanded ID functions and calls to subfunctions. From-SVN: r253298
This commit is contained in:
parent
e90c74f598
commit
e1e299f335
@ -1,3 +1,10 @@
|
||||
2017-09-29 Henry Linjamäki <henry.linjamaki@parmance.com>
|
||||
|
||||
* brigfrontend/brig-branch-inst-handler.cc: Fix crash with
|
||||
calls with more than 4 args. Also fix a misexecution issue
|
||||
with kernels that have both unexpanded ID functions and
|
||||
calls to subfunctions.
|
||||
|
||||
2017-09-28 Henry Linjamäki <henry.linjamaki@parmance.com>
|
||||
|
||||
* brig-lang.c: Added function attributes and their handlers.
|
||||
|
@ -42,7 +42,8 @@ brig_branch_inst_handler::operator () (const BrigBase *base)
|
||||
vec<tree, va_gc> *out_args;
|
||||
vec_alloc (out_args, 1);
|
||||
vec<tree, va_gc> *in_args;
|
||||
vec_alloc (in_args, 4);
|
||||
/* Ten elem initially, more reserved if needed. */
|
||||
vec_alloc (in_args, 10);
|
||||
|
||||
size_t operand_count = operand_entries->byteCount / 4;
|
||||
gcc_assert (operand_count < 4);
|
||||
@ -96,6 +97,7 @@ brig_branch_inst_handler::operator () (const BrigBase *base)
|
||||
}
|
||||
|
||||
gcc_assert (var != NULL_TREE);
|
||||
vec_safe_reserve (args, 1);
|
||||
vec_safe_push (args, var);
|
||||
++operand_ptr;
|
||||
bytes -= 4;
|
||||
@ -125,6 +127,7 @@ brig_branch_inst_handler::operator () (const BrigBase *base)
|
||||
|
||||
/* TODO: ensure the callee's frame is aligned! */
|
||||
|
||||
vec_safe_reserve (in_args, 4);
|
||||
vec_safe_push (in_args, m_parent.m_cf->m_context_arg);
|
||||
vec_safe_push (in_args, m_parent.m_cf->m_group_base_arg);
|
||||
vec_safe_push (in_args, group_local_offset);
|
||||
@ -147,7 +150,6 @@ brig_branch_inst_handler::operator () (const BrigBase *base)
|
||||
m_parent.m_cf->append_statement (call);
|
||||
}
|
||||
|
||||
m_parent.m_cf->m_has_unexpanded_dp_builtins = false;
|
||||
m_parent.m_cf->m_called_functions.push_back (func_ref);
|
||||
|
||||
return base->byteCount;
|
||||
|
Loading…
x
Reference in New Issue
Block a user