From da5bfefc78eed582764258d14997086e4e7e65a3 Mon Sep 17 00:00:00 2001 From: Anton Potapov Date: Tue, 8 Dec 2020 11:50:01 +0300 Subject: [PATCH] GAPI: fix Clang warning for dangling references in for loop variable --- modules/gapi/CMakeLists.txt | 4 ---- .../gapi/src/backends/common/gcompoundkernel.cpp | 2 +- .../gapi/src/backends/common/serialization.cpp | 8 ++++---- modules/gapi/src/backends/cpu/gcpubackend.cpp | 12 ++++++------ .../gapi/src/backends/fluid/gfluidbackend.cpp | 14 +++++++------- modules/gapi/src/backends/ocl/goclbackend.cpp | 16 ++++++++-------- modules/gapi/src/compiler/gcompiler.cpp | 4 ++-- modules/gapi/src/compiler/gmodelbuilder.cpp | 4 ++-- modules/gapi/src/compiler/passes/kernels.cpp | 4 ++-- modules/gapi/src/compiler/passes/meta.cpp | 4 ++-- modules/gapi/test/gapi_gcomputation_tests.cpp | 2 +- .../internal/gapi_int_gmodel_builder_test.cpp | 2 +- 12 files changed, 36 insertions(+), 40 deletions(-) diff --git a/modules/gapi/CMakeLists.txt b/modules/gapi/CMakeLists.txt index c1f58ee22b..20d54de092 100644 --- a/modules/gapi/CMakeLists.txt +++ b/modules/gapi/CMakeLists.txt @@ -38,10 +38,6 @@ if(MSVC) endif() endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") # don't add Clang here: issue should be investigated and fixed (workaround for Apple only) - ocv_warnings_disable(CMAKE_CXX_FLAGS -Wrange-loop-analysis) # https://github.com/opencv/opencv/issues/18928 -endif() - file(GLOB gapi_ext_hdrs "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" diff --git a/modules/gapi/src/backends/common/gcompoundkernel.cpp b/modules/gapi/src/backends/common/gcompoundkernel.cpp index 8983a3a2c9..20467117b2 100644 --- a/modules/gapi/src/backends/common/gcompoundkernel.cpp +++ b/modules/gapi/src/backends/common/gcompoundkernel.cpp @@ -16,7 +16,7 @@ cv::detail::GCompoundContext::GCompoundContext(const cv::GArgs& in_args) { m_args.resize(in_args.size()); - for (const auto& it : ade::util::indexed(in_args)) + for (const auto it : ade::util::indexed(in_args)) { const auto& i = ade::util::index(it); const auto& in_arg = ade::util::value(it); diff --git a/modules/gapi/src/backends/common/serialization.cpp b/modules/gapi/src/backends/common/serialization.cpp index 8c2313b292..3b60f5420a 100644 --- a/modules/gapi/src/backends/common/serialization.cpp +++ b/modules/gapi/src/backends/common/serialization.cpp @@ -71,7 +71,7 @@ void linkNodes(ade::Graph& g) { for (const auto& nh : g.nodes()) { if (gm.metadata(nh).get().t == cv::gimpl::NodeType::OP) { const auto& op = gm.metadata(nh).get(); - for (const auto& in : ade::util::indexed(op.args)) { + for (const auto in : ade::util::indexed(op.args)) { const auto& arg = ade::util::value(in); if (arg.kind == cv::detail::ArgKind::GOBJREF) { const auto idx = ade::util::index(in); @@ -82,9 +82,9 @@ void linkNodes(ade::Graph& g) { } } - for (const auto& out : ade::util::indexed(op.outs)) { - const auto idx = ade::util::index(out); - const auto rc = ade::util::value(out); + for (const auto out : ade::util::indexed(op.outs)) { + const auto idx = ade::util::index(out); + const auto& rc = ade::util::value(out); const auto& out_nh = dataNodes.at(rc); const auto& out_eh = g.link(nh, out_nh); gm.metadata(out_eh).set(cv::gimpl::Output{idx}); diff --git a/modules/gapi/src/backends/cpu/gcpubackend.cpp b/modules/gapi/src/backends/cpu/gcpubackend.cpp index 5e2540365b..cf4b087f92 100644 --- a/modules/gapi/src/backends/cpu/gcpubackend.cpp +++ b/modules/gapi/src/backends/cpu/gcpubackend.cpp @@ -237,11 +237,11 @@ void cv::gimpl::GCPUExecutable::run(std::vector &&input_objs, // - Output parameters. // FIXME: pre-allocate internal Mats, etc, according to the known meta - for (const auto &out_it : ade::util::indexed(op.outs)) + for (const auto out_it : ade::util::indexed(op.outs)) { // FIXME: Can the same GArg type resolution mechanism be reused here? - const auto out_port = ade::util::index(out_it); - const auto out_desc = ade::util::value(out_it); + const auto out_port = ade::util::index(out_it); + const auto& out_desc = ade::util::value(out_it); context.m_results[out_port] = magazine::getObjPtr(m_res, out_desc); } @@ -259,10 +259,10 @@ void cv::gimpl::GCPUExecutable::run(std::vector &&input_objs, //FIXME: unify with cv::detail::ensure_out_mats_not_reallocated //FIXME: when it's done, remove can_describe(const GMetaArg&, const GRunArgP&) //and descr_of(const cv::GRunArgP &argp) - for (const auto &out_it : ade::util::indexed(op_info.expected_out_metas)) + for (const auto out_it : ade::util::indexed(op_info.expected_out_metas)) { - const auto out_index = ade::util::index(out_it); - const auto expected_meta = ade::util::value(out_it); + const auto out_index = ade::util::index(out_it); + const auto& expected_meta = ade::util::value(out_it); if (!can_describe(expected_meta, context.m_results[out_index])) { diff --git a/modules/gapi/src/backends/fluid/gfluidbackend.cpp b/modules/gapi/src/backends/fluid/gfluidbackend.cpp index 030bb10198..0e33ca9c0f 100644 --- a/modules/gapi/src/backends/fluid/gfluidbackend.cpp +++ b/modules/gapi/src/backends/fluid/gfluidbackend.cpp @@ -232,7 +232,7 @@ void cv::gimpl::FluidAgent::reset() { m_producedLines = 0; - for (const auto& it : ade::util::indexed(in_views)) + for (const auto it : ade::util::indexed(in_views)) { auto& v = ade::util::value(it); if (v) @@ -505,7 +505,7 @@ void cv::gimpl::FluidAgent::doWork() k.m_f(in_args, out_buffers); - for (const auto& it : ade::util::indexed(in_views)) + for (const auto it : ade::util::indexed(in_views)) { auto& in_view = ade::util::value(it); @@ -517,7 +517,7 @@ void cv::gimpl::FluidAgent::doWork() }; } - for (auto out_buf : out_buffers) + for (auto* out_buf : out_buffers) { out_buf->priv().writeDone(); // FIXME WARNING: Scratch buffers rotated here too! @@ -571,10 +571,10 @@ void cv::gimpl::GFluidExecutable::initBufferRois(std::vector& readStarts, } // First, initialize rois for output nodes, add them to traversal stack - for (const auto& it : ade::util::indexed(proto.out_nhs)) + for (const auto it : ade::util::indexed(proto.out_nhs)) { const auto idx = ade::util::index(it); - const auto nh = ade::util::value(it); + const auto& nh = ade::util::value(it); const auto &d = m_gm.metadata(nh).get(); @@ -927,7 +927,7 @@ std::size_t cv::gimpl::GFluidExecutable::total_buffers_size() const { GConstFluidModel fg(m_g); std::size_t total_size = 0; - for (const auto &i : ade::util::indexed(m_buffers)) + for (const auto i : ade::util::indexed(m_buffers)) { // Check that all internal and scratch buffers are allocated const auto idx = ade::util::index(i); @@ -1310,7 +1310,7 @@ void cv::gimpl::GFluidExecutable::run(std::vector &input_objs, agent->reset(); // Pass input cv::Scalar's to agent argument const auto& op = m_gm.metadata(agent->op_handle).get(); - for (const auto& it : ade::util::indexed(op.args)) + for (const auto it : ade::util::indexed(op.args)) { const auto& arg = ade::util::value(it); packArg(agent->in_args[ade::util::index(it)], arg); diff --git a/modules/gapi/src/backends/ocl/goclbackend.cpp b/modules/gapi/src/backends/ocl/goclbackend.cpp index 847b802fd2..dba2b27b59 100644 --- a/modules/gapi/src/backends/ocl/goclbackend.cpp +++ b/modules/gapi/src/backends/ocl/goclbackend.cpp @@ -231,21 +231,21 @@ void cv::gimpl::GOCLExecutable::run(std::vector &&input_objs, // - Output parameters. // FIXME: pre-allocate internal Mats, etc, according to the known meta - for (const auto &out_it : ade::util::indexed(op.outs)) + for (const auto out_it : ade::util::indexed(op.outs)) { // FIXME: Can the same GArg type resolution mechanism be reused here? - const auto out_port = ade::util::index(out_it); - const auto out_desc = ade::util::value(out_it); + const auto out_port = ade::util::index(out_it); + const auto& out_desc = ade::util::value(out_it); context.m_results[out_port] = magazine::getObjPtr(m_res, out_desc, true); } // Now trigger the executable unit k.apply(context); - for (const auto &out_it : ade::util::indexed(op_info.expected_out_metas)) + for (const auto out_it : ade::util::indexed(op_info.expected_out_metas)) { - const auto out_index = ade::util::index(out_it); - const auto expected_meta = ade::util::value(out_it); + const auto out_index = ade::util::index(out_it); + const auto& expected_meta = ade::util::value(out_it); if (!can_describe(expected_meta, context.m_results[out_index])) { @@ -262,8 +262,8 @@ void cv::gimpl::GOCLExecutable::run(std::vector &&input_objs, for (auto &it : output_objs) { - auto& rc = it.first; - auto& g_arg = it.second; + const auto& rc = it.first; + auto& g_arg = it.second; magazine::writeBack(m_res, rc, g_arg); if (rc.shape == GShape::GMAT) { diff --git a/modules/gapi/src/compiler/gcompiler.cpp b/modules/gapi/src/compiler/gcompiler.cpp index 4d050dbabd..bc45de0161 100644 --- a/modules/gapi/src/compiler/gcompiler.cpp +++ b/modules/gapi/src/compiler/gcompiler.cpp @@ -338,7 +338,7 @@ void cv::gimpl::GCompiler::validateInputMeta() return false; // should never happen }; - for (const auto &meta_arg_idx : ade::util::indexed(ade::util::zip(m_metas, c_expr.m_ins))) + for (const auto meta_arg_idx : ade::util::indexed(ade::util::zip(m_metas, c_expr.m_ins))) { const auto &meta = std::get<0>(ade::util::value(meta_arg_idx)); const auto &proto = std::get<1>(ade::util::value(meta_arg_idx)); @@ -365,7 +365,7 @@ void cv::gimpl::GCompiler::validateOutProtoArgs() return; } const auto &c_expr = util::get(m_c.priv().m_shape); - for (const auto &out_pos : ade::util::indexed(c_expr.m_outs)) + for (const auto out_pos : ade::util::indexed(c_expr.m_outs)) { const auto &node = proto::origin_of(ade::util::value(out_pos)).node; if (node.shape() != cv::GNode::NodeShape::CALL) diff --git a/modules/gapi/src/compiler/gmodelbuilder.cpp b/modules/gapi/src/compiler/gmodelbuilder.cpp index 5f8f3518fc..f0e4917d7a 100644 --- a/modules/gapi/src/compiler/gmodelbuilder.cpp +++ b/modules/gapi/src/compiler/gmodelbuilder.cpp @@ -135,7 +135,7 @@ cv::gimpl::Unrolled cv::gimpl::unrollExpr(const GProtoArgs &ins, // Put the outputs object description of the node // so that they are not lost if they are not consumed by other operations GAPI_Assert(call_p.m_k.outCtors.size() == call_p.m_k.outShapes.size()); - for (const auto &it : ade::util::indexed(call_p.m_k.outShapes)) + for (const auto it : ade::util::indexed(call_p.m_k.outShapes)) { std::size_t port = ade::util::index(it); GShape shape = ade::util::value(it); @@ -212,7 +212,7 @@ cv::gimpl::GModelBuilder::put(const GProtoArgs &ins, const GProtoArgs &outs) const GCall::Priv& call_p = call.priv(); ade::NodeHandle call_h = put_OpNode(op_expr_node); - for (const auto &it : ade::util::indexed(call_p.m_args)) + for (const auto it : ade::util::indexed(call_p.m_args)) { const auto in_port = ade::util::index(it); const auto& in_arg = ade::util::value(it); diff --git a/modules/gapi/src/compiler/passes/kernels.cpp b/modules/gapi/src/compiler/passes/kernels.cpp index 837e21f19a..c954f53b5e 100644 --- a/modules/gapi/src/compiler/passes/kernels.cpp +++ b/modules/gapi/src/compiler/passes/kernels.cpp @@ -94,7 +94,7 @@ namespace // Reconnect expanded kernels from graph data objects // to subgraph data objects, then drop that graph data objects - for (const auto& it : ade::util::zip(in_nhs, sorted_in_nhs)) + for (const auto it : ade::util::zip(in_nhs, sorted_in_nhs)) { const auto& subgr_in_nh = std::get<0>(it); const auto& comp_in_nh = std::get<1>(it); @@ -105,7 +105,7 @@ namespace gr.erase(nh); - for (const auto& it : ade::util::zip(out_nhs, sorted_out_nhs)) + for (const auto it : ade::util::zip(out_nhs, sorted_out_nhs)) { const auto& subgr_out_nh = std::get<0>(it); const auto& comp_out_nh = std::get<1>(it); diff --git a/modules/gapi/src/compiler/passes/meta.cpp b/modules/gapi/src/compiler/passes/meta.cpp index 51d4c888bb..6e5bf0ab64 100644 --- a/modules/gapi/src/compiler/passes/meta.cpp +++ b/modules/gapi/src/compiler/passes/meta.cpp @@ -24,7 +24,7 @@ void cv::gimpl::passes::initMeta(ade::passes::PassContext &ctx, const GMetaArgs const auto &proto = gr.metadata().get(); - for (const auto& it : ade::util::indexed(proto.in_nhs)) + for (const auto it : ade::util::indexed(proto.in_nhs)) { auto& data = gr.metadata(ade::util::value(it)).get(); data.meta = metas.at(ade::util::index(it)); @@ -125,7 +125,7 @@ void cv::gimpl::passes::storeResultingMeta(ade::passes::PassContext &ctx) const auto &proto = gr.metadata().get(); GMetaArgs output_metas(proto.out_nhs.size()); - for (const auto& it : ade::util::indexed(proto.out_nhs)) + for (const auto it : ade::util::indexed(proto.out_nhs)) { auto& data = gr.metadata(ade::util::value(it)).get(); output_metas[ade::util::index(it)] = data.meta; diff --git a/modules/gapi/test/gapi_gcomputation_tests.cpp b/modules/gapi/test/gapi_gcomputation_tests.cpp index 47c0257d1e..5a92c9f9df 100644 --- a/modules/gapi/test/gapi_gcomputation_tests.cpp +++ b/modules/gapi/test/gapi_gcomputation_tests.cpp @@ -81,7 +81,7 @@ namespace opencv_test void check(const std::vector& out_mats) { - for (const auto& it : ade::util::zip(ref_mats, out_mats)) + for (const auto it : ade::util::zip(ref_mats, out_mats)) { const auto& ref_mat = std::get<0>(it); const auto& out_mat = std::get<1>(it); diff --git a/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp b/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp index c9d9926542..4291fd00e9 100644 --- a/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp +++ b/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp @@ -213,7 +213,7 @@ TEST(GModelBuilder, Check_Multiple_Outputs) EXPECT_EQ(0u, gm.metadata(p.out_nhs[1]->inEdges().front()).get().port); EXPECT_EQ(1u, gm.metadata(p.out_nhs[2]->inEdges().front()).get().port); EXPECT_EQ(0u, gm.metadata(p.out_nhs[3]->inEdges().front()).get().port); - for (const auto& it : ade::util::indexed(p.out_nhs)) + for (const auto it : ade::util::indexed(p.out_nhs)) { const auto& out_nh = ade::util::value(it); -- GitLab