From e9f0cb30e718b3eb1ce9ba0efacd2d36a1e4f832 Mon Sep 17 00:00:00 2001 From: "Warchulski, Jaroslaw" Date: Thu, 10 Nov 2022 13:10:24 +0000 Subject: [PATCH] Fix for '-q' option in ocloc Related-To: NEO-6425 Signed-off-by: Warchulski, Jaroslaw --- .../ocloc_fatbinary_tests.cpp | 36 +++++++++++++++++++ .../source/offline_compiler.cpp | 13 ++++--- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/opencl/test/unit_test/offline_compiler/ocloc_fatbinary_tests.cpp b/opencl/test/unit_test/offline_compiler/ocloc_fatbinary_tests.cpp index 67a020a722..bdaf6c39d7 100644 --- a/opencl/test/unit_test/offline_compiler/ocloc_fatbinary_tests.cpp +++ b/opencl/test/unit_test/offline_compiler/ocloc_fatbinary_tests.cpp @@ -1454,6 +1454,42 @@ TEST(OclocFatBinaryHelpersTest, givenNonEmptyBuildLogWhenBuildingFatbinaryForTar EXPECT_EQ(expectedOutput, output); } +TEST(OclocFatBinaryHelpersTest, givenNonEmptyBuildLogWhenBuildingFatbinaryForTargetThenBuildLogIsNotPrinted) { + ::testing::internal::CaptureStdout(); + + using namespace std::string_literals; + + const std::vector argv = { + "ocloc", + "-q", + "-file", + clFiles + "copybuffer.cl", + "-device", + gEnvironment->devicePrefix.c_str()}; + + MockOfflineCompiler mockOfflineCompiler{}; + mockOfflineCompiler.initialize(argv.size(), argv); + + const auto mockArgHelper = mockOfflineCompiler.uniqueHelper.get(); + const auto deviceConfig = getDeviceConfig(mockOfflineCompiler, mockArgHelper); + + const char buildWarning[] = "Warning: this is a build log!"; + mockOfflineCompiler.updateBuildLog(buildWarning, sizeof(buildWarning)); + mockOfflineCompiler.buildReturnValue = OclocErrorCode::SUCCESS; + + // Dummy value + mockOfflineCompiler.elfBinary = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ar::ArEncoder ar; + const std::string pointerSize{"32"}; + + const int previousReturnValue{OclocErrorCode::SUCCESS}; + buildFatBinaryForTarget(previousReturnValue, argv, pointerSize, ar, &mockOfflineCompiler, mockArgHelper, deviceConfig); + const auto output{::testing::internal::GetCapturedStdout()}; + + EXPECT_TRUE(output.empty()) << output; +} + TEST(OclocFatBinaryHelpersTest, givenQuietModeWhenBuildingFatbinaryForTargetThenNothingIsPrinted) { using namespace std::string_literals; diff --git a/shared/offline_compiler/source/offline_compiler.cpp b/shared/offline_compiler/source/offline_compiler.cpp index 7186cb68a1..c39be38def 100644 --- a/shared/offline_compiler/source/offline_compiler.cpp +++ b/shared/offline_compiler/source/offline_compiler.cpp @@ -416,11 +416,14 @@ int OfflineCompiler::build() { void OfflineCompiler::updateBuildLog(const char *pErrorString, const size_t errorStringSize) { std::string errorString = (errorStringSize && pErrorString) ? std::string(pErrorString, pErrorString + errorStringSize) : ""; if (errorString[0] != '\0') { - if (buildLog.empty()) { - buildLog.assign(errorString.c_str()); - } else { - buildLog.append("\n"); - buildLog.append(errorString.c_str()); + bool errorFound = (errorString.find("Error") != std::string::npos) || (errorString.find("error") != std::string::npos); + if (!isQuiet() || errorFound) { + if (buildLog.empty()) { + buildLog.assign(errorString.c_str()); + } else { + buildLog.append("\n"); + buildLog.append(errorString.c_str()); + } } } }