This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]