This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tuples] walk_gimple_stmt: handle WCE
> Yes, walking the PRE_BODY first makes perfect sense.
Perfect. Below is the patch I am committing.
* gimple.c (walk_gimple_stmt): Collapse common code.
Add case for GIMPLE_WITH_CLEANUP_EXPR.
Index: gimple.c
===================================================================
--- gimple.c (revision 133138)
+++ gimple.c (working copy)
@@ -1491,51 +1491,31 @@ walk_gimple_stmt (gimple_stmt_iterator *
return ret;
break;
- case GIMPLE_OMP_CRITICAL:
- ret = walk_gimple_seq (gimple_omp_body (stmt), callback_stmt, callback_op,
- wi);
+ case GIMPLE_OMP_FOR:
+ ret = walk_gimple_seq (gimple_omp_for_pre_body (stmt), callback_stmt,
+ callback_op, wi);
if (ret)
return ret;
- break;
+ /* FALL THROUGH. */
+
+ case GIMPLE_OMP_CRITICAL:
case GIMPLE_OMP_CONTINUE:
case GIMPLE_OMP_MASTER:
case GIMPLE_OMP_ORDERED:
case GIMPLE_OMP_SECTION:
- ret = walk_gimple_seq (gimple_omp_body (stmt), callback_stmt, callback_op,
- wi);
- if (ret)
- return ret;
- break;
-
- case GIMPLE_OMP_FOR:
- ret = walk_gimple_seq (gimple_omp_body (stmt), callback_stmt, callback_op,
- wi);
- if (ret)
- return ret;
- ret = walk_gimple_seq (gimple_omp_for_pre_body (stmt), callback_stmt,
- callback_op, wi);
- if (ret)
- return ret;
- break;
-
case GIMPLE_OMP_PARALLEL:
- ret = walk_gimple_seq (gimple_omp_body (stmt), callback_stmt, callback_op,
- wi);
- if (ret)
- return ret;
- break;
-
case GIMPLE_OMP_SECTIONS:
+ case GIMPLE_OMP_SINGLE:
ret = walk_gimple_seq (gimple_omp_body (stmt), callback_stmt, callback_op,
wi);
if (ret)
return ret;
break;
- case GIMPLE_OMP_SINGLE:
- ret = walk_gimple_seq (gimple_omp_body (stmt), callback_stmt, callback_op,
- wi);
+ case GIMPLE_WITH_CLEANUP_EXPR:
+ ret = walk_gimple_seq (gimple_wce_cleanup (stmt), callback_stmt,
+ callback_op, wi);
if (ret)
return ret;
break;