Commit 40e2341e by Tom de Vries Committed by Tom de Vries

Handle sizes and kinds params of GOACC_paralllel in find_func_clobbers

2015-12-13  Tom de Vries  <tom@codesourcery.com>

	* tree-ssa-structalias.c (find_func_clobbers): Handle sizes and kinds
	parameters of GOACC_paralllel.

From-SVN: r231595
parent 7fa658c2
2015-12-13 Tom de Vries <tom@codesourcery.com>
* tree-ssa-structalias.c (find_func_clobbers): Handle sizes and kinds
parameters of GOACC_paralllel.
2015-12-10 Jan Hubicka <hubicka@ucw.cz> 2015-12-10 Jan Hubicka <hubicka@ucw.cz>
* cgraph.c (cgraph_node::get_untransformed_body): Pass compressed * cgraph.c (cgraph_node::get_untransformed_body): Pass compressed
...@@ -5089,6 +5089,8 @@ find_func_clobbers (struct function *fn, gimple *origt) ...@@ -5089,6 +5089,8 @@ find_func_clobbers (struct function *fn, gimple *origt)
case BUILT_IN_GOACC_PARALLEL: case BUILT_IN_GOACC_PARALLEL:
{ {
unsigned int fnpos, argpos; unsigned int fnpos, argpos;
unsigned int implicit_use_args[2];
unsigned int num_implicit_use_args = 0;
switch (DECL_FUNCTION_CODE (decl)) switch (DECL_FUNCTION_CODE (decl))
{ {
case BUILT_IN_GOMP_PARALLEL: case BUILT_IN_GOMP_PARALLEL:
...@@ -5101,6 +5103,8 @@ find_func_clobbers (struct function *fn, gimple *origt) ...@@ -5101,6 +5103,8 @@ find_func_clobbers (struct function *fn, gimple *origt)
sizes, kinds, ...). */ sizes, kinds, ...). */
fnpos = 1; fnpos = 1;
argpos = 3; argpos = 3;
implicit_use_args[num_implicit_use_args++] = 4;
implicit_use_args[num_implicit_use_args++] = 5;
break; break;
default: default:
gcc_unreachable (); gcc_unreachable ();
...@@ -5121,6 +5125,18 @@ find_func_clobbers (struct function *fn, gimple *origt) ...@@ -5121,6 +5125,18 @@ find_func_clobbers (struct function *fn, gimple *origt)
process_constraint (new_constraint (lhs, *rhsp)); process_constraint (new_constraint (lhs, *rhsp));
rhsc.truncate (0); rhsc.truncate (0);
/* Handle parameters used by the call, but not used in cfi, as
implicitly used by cfi. */
lhs = get_function_part_constraint (cfi, fi_uses);
for (unsigned i = 0; i < num_implicit_use_args; ++i)
{
tree arg = gimple_call_arg (t, implicit_use_args[i]);
get_constraint_for (arg, &rhsc);
FOR_EACH_VEC_ELT (rhsc, j, rhsp)
process_constraint (new_constraint (lhs, *rhsp));
rhsc.truncate (0);
}
/* The caller clobbers what the callee does. */ /* The caller clobbers what the callee does. */
lhs = get_function_part_constraint (fi, fi_clobbers); lhs = get_function_part_constraint (fi, fi_clobbers);
rhs = get_function_part_constraint (cfi, fi_clobbers); rhs = get_function_part_constraint (cfi, fi_clobbers);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment