Handle sizes and kinds params of GOACC_paralllel in find_func_clobbers
authorTom de Vries <tom@codesourcery.com>
Sun, 13 Dec 2015 12:43:21 +0000 (12:43 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Sun, 13 Dec 2015 12:43:21 +0000 (12:43 +0000)
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

gcc/ChangeLog
gcc/tree-ssa-structalias.c

index 1e68758cdac098c2bd149f650ff2fa92a37c7de6..eee44a7cdda871e7651a0099a6e6fb327c963fdd 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        * cgraph.c (cgraph_node::get_untransformed_body): Pass compressed
index 7420ce16f8178a992babc61e4ddde5f2a1f2259b..b34c955146d0677d76c74481641efe43e7faa6df 100644 (file)
@@ -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);