Hi!

On Wed, 10 Dec 2014 11:10:47 +0100, Jakub Jelinek <ja...@redhat.com> wrote:
> On Wed, Dec 10, 2014 at 11:07:37AM +0100, Thomas Schwinge wrote:
> > ..., I noticed that GIMPLE_OMP_TARGET doesn't walk the child_fn and
> > data_arg.  Is that intentional, or should that be done?  If the latter
> > (but this doesn't seem to cause any ill effects -- why?), OK to commit
> > the following to trunk?
> 
> Ok with proper ChangeLog.
> 
> >  gcc/gimple-walk.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> > 
> > diff --git gcc/gimple-walk.c gcc/gimple-walk.c
> > index bfa3532..1330c04 100644
> > --- gcc/gimple-walk.c
> > +++ gcc/gimple-walk.c
> > @@ -416,6 +416,14 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
> >                    pset);
> >        if (ret)
> >     return ret;
> > +      ret = walk_tree (gimple_omp_target_child_fn_ptr (stmt), callback_op, 
> > wi,
> > +                  pset);
> > +      if (ret)
> > +   return ret;
> > +      ret = walk_tree (gimple_omp_target_data_arg_ptr (stmt), callback_op, 
> > wi,
> > +                  pset);
> > +      if (ret)
> > +   return ret;
> >        break;
> >  
> >      case GIMPLE_OMP_TEAMS:

Committed to trunk in r218686:

commit c1277edd4b50623bae89bea8cba84def9b308e77
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Dec 12 20:01:18 2014 +0000

    A bit of walk_gimple_op maintenance.
    
        * gimple-walk.c (walk_gimple_op) <GIMPLE_OMP_FOR>: Also check
        intermediate walk_tree results for for_incr.
        <GIMPLE_OMP_TARGET>: Walk child_fn and data_arg, too.
        <GIMPLE_OMP_CRITICAL, GIMPLE_OMP_ATOMIC_STORE>: Pretty printing.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218686 
138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog     |  7 +++++++
 gcc/gimple-walk.c | 49 +++++++++++++++++++++++++++++++------------------
 2 files changed, 38 insertions(+), 18 deletions(-)

diff --git gcc/ChangeLog gcc/ChangeLog
index bf9571b..3a20032 100644
--- gcc/ChangeLog
+++ gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-12  Thomas Schwinge  <tho...@codesourcery.com>
+
+       * gimple-walk.c (walk_gimple_op) <GIMPLE_OMP_FOR>: Also check
+       intermediate walk_tree results for for_incr.
+       <GIMPLE_OMP_TARGET>: Walk child_fn and data_arg, too.
+       <GIMPLE_OMP_CRITICAL, GIMPLE_OMP_ATOMIC_STORE>: Pretty printing.
+
 2014-12-12  Richard Sandiford  <richard.sandif...@arm.com>
 
        PR middle-end/64182
diff --git gcc/gimple-walk.c gcc/gimple-walk.c
index 48fa05d..959d68e 100644
--- gcc/gimple-walk.c
+++ gcc/gimple-walk.c
@@ -321,11 +321,13 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
       break;
 
     case GIMPLE_OMP_CRITICAL:
-      ret = walk_tree (gimple_omp_critical_name_ptr (
-                        as_a <gomp_critical *> (stmt)),
-                      callback_op, wi, pset);
-      if (ret)
-       return ret;
+      {
+       gomp_critical *omp_stmt = as_a <gomp_critical *> (stmt);
+       ret = walk_tree (gimple_omp_critical_name_ptr (omp_stmt),
+                        callback_op, wi, pset);
+       if (ret)
+         return ret;
+      }
       break;
 
     case GIMPLE_OMP_FOR:
@@ -349,9 +351,9 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
            return ret;
          ret = walk_tree (gimple_omp_for_incr_ptr (stmt, i), callback_op,
                           wi, pset);
+         if (ret)
+           return ret;
        }
-      if (ret)
-       return ret;
       break;
 
     case GIMPLE_OMP_PARALLEL:
@@ -404,7 +406,6 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
                       wi, pset);
       if (ret)
        return ret;
-
       ret = walk_tree (gimple_omp_sections_control_ptr (stmt), callback_op,
                       wi, pset);
       if (ret)
@@ -420,10 +421,21 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
       break;
 
     case GIMPLE_OMP_TARGET:
-      ret = walk_tree (gimple_omp_target_clauses_ptr (stmt), callback_op, wi,
-                      pset);
-      if (ret)
-       return ret;
+      {
+       gomp_target *omp_stmt = as_a <gomp_target *> (stmt);
+       ret = walk_tree (gimple_omp_target_clauses_ptr (omp_stmt),
+                        callback_op, wi, pset);
+       if (ret)
+         return ret;
+       ret = walk_tree (gimple_omp_target_child_fn_ptr (omp_stmt),
+                        callback_op, wi, pset);
+       if (ret)
+         return ret;
+       ret = walk_tree (gimple_omp_target_data_arg_ptr (omp_stmt),
+                        callback_op, wi, pset);
+       if (ret)
+         return ret;
+      }
       break;
 
     case GIMPLE_OMP_TEAMS:
@@ -440,7 +452,6 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
                         callback_op, wi, pset);
        if (ret)
          return ret;
-
        ret = walk_tree (gimple_omp_atomic_load_rhs_ptr (omp_stmt),
                         callback_op, wi, pset);
        if (ret)
@@ -449,11 +460,13 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
       break;
 
     case GIMPLE_OMP_ATOMIC_STORE:
-      ret = walk_tree (gimple_omp_atomic_store_val_ptr (
-                        as_a <gomp_atomic_store *> (stmt)),
-                      callback_op, wi, pset);
-      if (ret)
-       return ret;
+      {
+       gomp_atomic_store *omp_stmt = as_a <gomp_atomic_store *> (stmt);
+       ret = walk_tree (gimple_omp_atomic_store_val_ptr (omp_stmt),
+                        callback_op, wi, pset);
+       if (ret)
+         return ret;
+      }
       break;
 
     case GIMPLE_TRANSACTION:


Grüße,
 Thomas

Attachment: pgp0qCUA_aclW.pgp
Description: PGP signature

Reply via email to