diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-12-13 12:43:21 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-12-13 12:43:21 +0000 |
commit | 40e2341e427a28fa7d97d6788e381468e8a4b198 (patch) | |
tree | 343cf385dfee475c1f14ff9efe4bc924428ff305 /gcc/tree-ssa-structalias.c | |
parent | 7fa658c2ccdcb482c5060a5cff71b416ae876dbf (diff) | |
download | gcc-40e2341e427a28fa7d97d6788e381468e8a4b198.zip gcc-40e2341e427a28fa7d97d6788e381468e8a4b198.tar.gz gcc-40e2341e427a28fa7d97d6788e381468e8a4b198.tar.bz2 |
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
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r-- | gcc/tree-ssa-structalias.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 7420ce1..b34c955 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -5089,6 +5089,8 @@ find_func_clobbers (struct function *fn, gimple *origt) case BUILT_IN_GOACC_PARALLEL: { unsigned int fnpos, argpos; + unsigned int implicit_use_args[2]; + unsigned int num_implicit_use_args = 0; switch (DECL_FUNCTION_CODE (decl)) { case BUILT_IN_GOMP_PARALLEL: @@ -5101,6 +5103,8 @@ find_func_clobbers (struct function *fn, gimple *origt) sizes, kinds, ...). */ fnpos = 1; argpos = 3; + implicit_use_args[num_implicit_use_args++] = 4; + implicit_use_args[num_implicit_use_args++] = 5; break; default: gcc_unreachable (); @@ -5121,6 +5125,18 @@ find_func_clobbers (struct function *fn, gimple *origt) process_constraint (new_constraint (lhs, *rhsp)); 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. */ lhs = get_function_part_constraint (fi, fi_clobbers); rhs = get_function_part_constraint (cfi, fi_clobbers); |