aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/armnn/Graph.cpp5
-rw-r--r--src/armnn/test/GraphTests.cpp2
2 files changed, 5 insertions, 2 deletions
diff --git a/src/armnn/Graph.cpp b/src/armnn/Graph.cpp
index be792a63a5..a5c85092b0 100644
--- a/src/armnn/Graph.cpp
+++ b/src/armnn/Graph.cpp
@@ -263,7 +263,10 @@ void Graph::AddCopyLayers()
// All layers should have been associated with a valid compute device at this point.
BOOST_ASSERT(layer.GetBackendId() != Compute::Undefined);
// Does not need another copy layer if a copy layer is already present.
- return layer.GetType() != LayerType::MemCopy;
+ return layer.GetType() != LayerType::MemCopy &&
+ // Input and Output layers can perform their own copies internally.
+ layer.GetType() != LayerType::Input &&
+ layer.GetType() != LayerType::Output;
};
for (auto&& srcLayer : m_Layers)
diff --git a/src/armnn/test/GraphTests.cpp b/src/armnn/test/GraphTests.cpp
index 0777d98d3a..44cfa2eaec 100644
--- a/src/armnn/test/GraphTests.cpp
+++ b/src/armnn/test/GraphTests.cpp
@@ -545,7 +545,7 @@ BOOST_AUTO_TEST_CASE(CopyLayersAddedBetweenSameLayersHaveDifferentNames)
graph.AddCopyLayers();
std::vector<Edge> edges = GetEdgeList(graph);
- BOOST_CHECK(edges.size() == 7u);
+ BOOST_CHECK(edges.size() == 6u);
std::sort(edges.begin(), edges.end());
auto last = std::unique(edges.begin(), edges.end());
BOOST_CHECK_MESSAGE(last == edges.end(), "Found duplicated edges after AddCopyLayers()");