aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2015-12-13 12:43:21 +0000
committerTom de Vries <vries@gcc.gnu.org>2015-12-13 12:43:21 +0000
commit40e2341e427a28fa7d97d6788e381468e8a4b198 (patch)
tree343cf385dfee475c1f14ff9efe4bc924428ff305 /gcc/tree-ssa-structalias.c
parent7fa658c2ccdcb482c5060a5cff71b416ae876dbf (diff)
downloadgcc-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.c16
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);