diff --git a/level_zero/core/source/module/module_imp.cpp b/level_zero/core/source/module/module_imp.cpp index d4e8403bfc..6cf8d36c79 100644 --- a/level_zero/core/source/module/module_imp.cpp +++ b/level_zero/core/source/module/module_imp.cpp @@ -155,7 +155,7 @@ std::string ModuleTranslationUnit::generateCompilerOptions(const char *buildOpti bool isDebuggerActive = neoDevice.getDebugger() != nullptr; NEO::CompilerOptions::concatenateAppend(internalOptions, compilerProductHelper.getCachingPolicyOptions(isDebuggerActive)); - NEO::CompilerOptions::applyExtraInternalOptions(internalOptions, compilerProductHelper); + NEO::CompilerOptions::applyExtraInternalOptions(internalOptions, compilerProductHelper, NEO::CompilerOptions::HeaplessMode::defaultMode); return internalOptions; } diff --git a/opencl/source/program/program.cpp b/opencl/source/program/program.cpp index 2c6349924e..012e2fee91 100644 --- a/opencl/source/program/program.cpp +++ b/opencl/source/program/program.cpp @@ -109,7 +109,7 @@ std::string Program::getInternalOptions() const { CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::preserveVec3Type); auto isDebuggerActive = pClDevice->getDevice().getDebugger() != nullptr; CompilerOptions::concatenateAppend(internalOptions, compilerProductHelper.getCachingPolicyOptions(isDebuggerActive)); - CompilerOptions::applyExtraInternalOptions(internalOptions, compilerProductHelper); + CompilerOptions::applyExtraInternalOptions(internalOptions, compilerProductHelper, NEO::CompilerOptions::HeaplessMode::defaultMode); return internalOptions; } diff --git a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp index a4301d005b..571b11b5fb 100644 --- a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp +++ b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -4606,6 +4606,44 @@ TEST(OclocCompile, GivenStatefulAddressModeWhenInvalidArgsPAssedThenErrorIsRetur EXPECT_STRNE(output.c_str(), ""); } +TEST(OclocCompile, GivenInvalidHeaplessModeOptionWhenOclocArgsAreParsedThenErrorIsReturned) { + + MockOfflineCompiler ocloc; + std::vector args = { + "ocloc", + "-file", + clFiles + "copybuffer.cl", + "-device", + gEnvironment->devicePrefix.c_str(), + "-heapless_mode", + "invalid"}; + testing::internal::CaptureStdout(); + int retVal = ocloc.parseCommandLine(args.size(), args); + EXPECT_EQ(OCLOC_INVALID_COMMAND_LINE, retVal); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_STRNE(output.c_str(), ""); +} + +TEST(OclocCompile, GivenValidHeaplessModeOptionWhenOclocArgsAreParsedThenSuccessIsReturned) { + + for (auto heaplessMode : {"enable", "disable", "default"}) { + MockOfflineCompiler ocloc; + std::vector args = { + "ocloc", + "-file", + clFiles + "copybuffer.cl", + "-device", + gEnvironment->devicePrefix.c_str(), + "-heapless_mode", + heaplessMode}; + testing::internal::CaptureStdout(); + int retVal = ocloc.parseCommandLine(args.size(), args); + EXPECT_EQ(OCLOC_SUCCESS, retVal); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_STREQ(output.c_str(), ""); + } +} + TEST(OclocCompile, GivenStatefulAddressModeSetToBindlessWhenBuildThenBindlessModeInternalOptionsAreAdded) { MockOfflineCompiler ocloc; diff --git a/shared/offline_compiler/source/offline_compiler.cpp b/shared/offline_compiler/source/offline_compiler.cpp index eebcbb7e58..51d7357ab7 100644 --- a/shared/offline_compiler/source/offline_compiler.cpp +++ b/shared/offline_compiler/source/offline_compiler.cpp @@ -1075,6 +1075,19 @@ int OfflineCompiler::parseCommandLine(size_t numArgs, const std::vectorprintf("Error: Invalid heapless mode.\n"); + retVal = OCLOC_INVALID_COMMAND_LINE; + break; + } + argIndex++; } else if (("-config" == currArg) && hasMoreArgs) { parseHwInfoConfigString(argv[argIndex + 1], hwInfoConfig); if (!hwInfoConfig) { @@ -1189,7 +1202,7 @@ void OfflineCompiler::appendExtraInternalOptions(std::string &internalOptions) { } CompilerOptions::concatenateAppend(internalOptions, compilerProductHelper->getCachingPolicyOptions(false)); - CompilerOptions::applyExtraInternalOptions(internalOptions, *compilerProductHelper); + CompilerOptions::applyExtraInternalOptions(internalOptions, *compilerProductHelper, this->heaplessMode); } void OfflineCompiler::parseDebugSettings() { @@ -1412,6 +1425,11 @@ Usage: ocloc [compile] -file -device [-output