Fix incorrect use of UpdateEdge for control edges during import

PiperOrigin-RevId: 276601997
Change-Id: Ia6af490a5cea3072a44505935ea6ddedd9c2ce05
diff --git a/tensorflow/compiler/mlir/tensorflow/translate/import_model.cc b/tensorflow/compiler/mlir/tensorflow/translate/import_model.cc
index cee7137..fe14b34 100644
--- a/tensorflow/compiler/mlir/tensorflow/translate/import_model.cc
+++ b/tensorflow/compiler/mlir/tensorflow/translate/import_model.cc
@@ -462,10 +462,15 @@
 
   while (!input_node->out_edges().empty()) {
     const Edge* oe = *input_node->out_edges().begin();
-    TF_RETURN_IF_ERROR(graph_->UpdateEdge(
-        placeholder_node,
-        oe->src_output() == Graph::kControlSlot ? Graph::kControlSlot : 0,
-        oe->dst(), oe->dst_input()));
+    // UpdateEdge cannot be used with control edges.
+    if (oe->src_output() == Graph::kControlSlot) {
+      graph_->AddControlEdge(placeholder_node, oe->dst());
+      graph_->RemoveControlEdge(oe);
+      continue;
+    }
+
+    TF_RETURN_IF_ERROR(
+        graph_->UpdateEdge(placeholder_node, 0, oe->dst(), oe->dst_input()));
   }
 
   graph_->RemoveNode(input_node);