Instead of iterating each time for calling lowering function
(lower_opt_convert, etc.),
add new lower function and pass lower_opt_convert, lower_for etc. to
it as callback.

* genmatch.c (lower): New overloaded function.
    (lower): Adjust to call overloaded lower.

Thanks,
Prathamesh
Index: gcc/genmatch.c
===================================================================
--- gcc/genmatch.c	(revision 216577)
+++ gcc/genmatch.c	(working copy)
@@ -880,24 +880,25 @@
 /* Lower the AST for everything in SIMPLIFIERS.  */
 
 static void
+lower (vec<simplify *>& in, vec<simplify *>& out, void (*lower_fn)(simplify *, vec<simplify *>&))
+{
+  for (unsigned i = 0; i < in.length (); ++i)
+    lower_fn (in[i], out);
+}
+
+static void
 lower (vec<simplify *>& simplifiers)
 {
   auto_vec<simplify *> out_simplifiers0;
-  for (unsigned i = 0; i < simplifiers.length (); ++i)
-    lower_opt_convert (simplifiers[i], out_simplifiers0);
-
   auto_vec<simplify *> out_simplifiers1;
-  for (unsigned i = 0; i < out_simplifiers0.length (); ++i)
-    lower_commutative (out_simplifiers0[i], out_simplifiers1);
-
+  
+  lower (simplifiers, out_simplifiers0, lower_opt_convert);
+  lower (out_simplifiers0, out_simplifiers1, lower_commutative);
+  
   simplifiers.truncate (0);
-  for (unsigned i = 0; i < out_simplifiers1.length (); ++i)
-    lower_for (out_simplifiers1[i], simplifiers);
+  lower (out_simplifiers1, simplifiers, lower_for); 
 }
 
-
-
-
 /* The decision tree built for generating GIMPLE and GENERIC pattern
    matching code.  It represents the 'match' expression of all
    simplifies and has those as its leafs.  */

Reply via email to