Add common subgraph elimination to the tf.data optimization pipeline, This optimizer was pulled out of arithmetic optimizer as a separate pass.

PiperOrigin-RevId: 301703580
Change-Id: I668d4659f11d4b426148a153c04df79659888489
diff --git a/tensorflow/core/grappler/optimizers/data/BUILD b/tensorflow/core/grappler/optimizers/data/BUILD
index bdc36c9..519f689 100644
--- a/tensorflow/core/grappler/optimizers/data/BUILD
+++ b/tensorflow/core/grappler/optimizers/data/BUILD
@@ -635,6 +635,7 @@
         "@com_google_absl//absl/strings",
         "//tensorflow/core/grappler/clusters:cluster",
         "//tensorflow/core/grappler/optimizers:arithmetic_optimizer",
+        "//tensorflow/core/grappler/optimizers:common_subgraph_elimination",
         "//tensorflow/core/grappler/optimizers:custom_graph_optimizer",
         "//tensorflow/core/grappler/optimizers:custom_graph_optimizer_registry",
         "//tensorflow/core/grappler/optimizers:dependency_optimizer",
diff --git a/tensorflow/core/grappler/optimizers/data/meta_optimizer.cc b/tensorflow/core/grappler/optimizers/data/meta_optimizer.cc
index 150a44f..39b59a2 100644
--- a/tensorflow/core/grappler/optimizers/data/meta_optimizer.cc
+++ b/tensorflow/core/grappler/optimizers/data/meta_optimizer.cc
@@ -19,6 +19,7 @@
 #include "tensorflow/core/grappler/clusters/cluster.h"
 #include "tensorflow/core/grappler/grappler_item.h"
 #include "tensorflow/core/grappler/optimizers/arithmetic_optimizer.h"
+#include "tensorflow/core/grappler/optimizers/common_subgraph_elimination.h"
 #include "tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.h"
 #include "tensorflow/core/grappler/optimizers/dependency_optimizer.h"
 #include "tensorflow/core/grappler/optimizers/function_optimizer.h"
@@ -174,6 +175,8 @@
   enabled_optimizers_["function"] = MakeUnique<FunctionOptimizer>(
       RewriterConfig::ON, /*lower_control_flow=*/true);
   enabled_optimizers_["shape"] = MakeUnique<ShapeOptimizer>();
+  enabled_optimizers_["common_subgraph_elimination"] =
+      MakeUnique<CommonSubgraphElimination>();
   enabled_optimizers_["arithmetic"] = MakeUnique<ArithmeticOptimizer>();
   enabled_optimizers_["dependency"] = MakeUnique<DependencyOptimizer>();