From 1bd5ca1ebe3279d5492f95f6c080475ef03fd74d Mon Sep 17 00:00:00 2001 From: Kumataro Date: Sun, 2 Jun 2024 20:14:04 +0900 Subject: [PATCH] Merge pull request #25686 from Kumataro:fix25674 Suppress build warnings for GCC14 #25686 Close #25674 ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [x] There is a reference to the original bug report and related work - [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [ ] The feature is well documented and sample code can be built with the project CMake --- modules/core/test/test_mat.cpp | 2 +- modules/dnn/src/tensorflow/tf_importer.cpp | 2 +- modules/dnn/src/torch/torch_importer.cpp | 2 +- modules/gapi/src/compiler/passes/exec.cpp | 2 +- .../gapi/src/streaming/onevpl/file_data_provider.hpp | 2 +- modules/ts/include/opencv2/ts/ts_gtest.h | 11 +++++++++++ 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/modules/core/test/test_mat.cpp b/modules/core/test/test_mat.cpp index 23a00a7eff..d13fd96f57 100644 --- a/modules/core/test/test_mat.cpp +++ b/modules/core/test/test_mat.cpp @@ -601,7 +601,7 @@ static void setValue(SparseMat& M, const int* idx, double value, RNG& rng) CV_Error(cv::Error::StsUnsupportedFormat, ""); } -#if defined(__GNUC__) && (__GNUC__ == 11 || __GNUC__ == 12 || __GNUC__ == 13) +#if defined(__GNUC__) && (__GNUC__ >= 11) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Warray-bounds" #endif diff --git a/modules/dnn/src/tensorflow/tf_importer.cpp b/modules/dnn/src/tensorflow/tf_importer.cpp index bd7ed3e02c..3e73037a60 100644 --- a/modules/dnn/src/tensorflow/tf_importer.cpp +++ b/modules/dnn/src/tensorflow/tf_importer.cpp @@ -260,7 +260,7 @@ const tensorflow::AttrValue& getLayerAttr(const tensorflow::NodeDef &layer, cons return layer.attr().at(name); } -#if defined(__GNUC__) && (__GNUC__ == 13) +#if defined(__GNUC__) && (__GNUC__ >= 13) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdangling-reference" #endif diff --git a/modules/dnn/src/torch/torch_importer.cpp b/modules/dnn/src/torch/torch_importer.cpp index be4f3fe851..08822102c7 100644 --- a/modules/dnn/src/torch/torch_importer.cpp +++ b/modules/dnn/src/torch/torch_importer.cpp @@ -902,7 +902,7 @@ struct TorchImporter { readTorchTable(scalarParams, tensorParams); - float power; + float power = 1.0f; if (nnName == "Square") power = 2.0f; else if (nnName == "Sqrt") power = 0.5f; else if (nnName == "Power") power = scalarParams.get("pow", 1.0f); diff --git a/modules/gapi/src/compiler/passes/exec.cpp b/modules/gapi/src/compiler/passes/exec.cpp index a978e47b42..f5cb48162d 100644 --- a/modules/gapi/src/compiler/passes/exec.cpp +++ b/modules/gapi/src/compiler/passes/exec.cpp @@ -158,7 +158,7 @@ namespace std::unordered_set cycle_causers; }; -#if defined(__GNUC__) && (__GNUC__ == 13) +#if defined(__GNUC__) && (__GNUC__ >= 13) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdangling-reference" #endif diff --git a/modules/gapi/src/streaming/onevpl/file_data_provider.hpp b/modules/gapi/src/streaming/onevpl/file_data_provider.hpp index 7e5e49b0e8..129c6a9d68 100644 --- a/modules/gapi/src/streaming/onevpl/file_data_provider.hpp +++ b/modules/gapi/src/streaming/onevpl/file_data_provider.hpp @@ -21,7 +21,7 @@ namespace onevpl { // With gcc13, std::unique_ptr(FILE, decltype(&fclose)> causes ignored-attributes warning. // See https://stackoverflow.com/questions/76849365/can-we-add-attributes-to-standard-function-declarations-without-breaking-standar -#if defined(__GNUC__) && (__GNUC__ == 13) +#if defined(__GNUC__) && (__GNUC__ >= 13) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wignored-attributes" #endif diff --git a/modules/ts/include/opencv2/ts/ts_gtest.h b/modules/ts/include/opencv2/ts/ts_gtest.h index b6a953592f..49eb3a5ec7 100644 --- a/modules/ts/include/opencv2/ts/ts_gtest.h +++ b/modules/ts/include/opencv2/ts/ts_gtest.h @@ -21317,6 +21317,13 @@ AssertionResult CmpHelperEQFailure(const char* lhs_expression, false); } +// See https://github.com/opencv/opencv/issues/25674 +// Disable optimization for workaround to mis-branch for GCC14. +#if defined(__GNUC__) && (__GNUC__ == 14) +#pragma GCC push_options +#pragma GCC optimize ("O0") +#endif + // The helper function for {ASSERT|EXPECT}_EQ. template AssertionResult CmpHelperEQ(const char* lhs_expression, @@ -21330,6 +21337,10 @@ AssertionResult CmpHelperEQ(const char* lhs_expression, return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs); } +#if defined(__GNUC__) && (__GNUC__ == 14) +#pragma GCC pop_options +#endif + // With this overloaded version, we allow anonymous enums to be used // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums // can be implicitly cast to BiggestInt.