@@ -1092,6 +1092,34 @@ TEST_P(ProgramFromSourceTest, GivenFlagsWhenCompilingProgramThenBuildOptionsHave
10921092 EXPECT_TRUE (CompilerOptions::contains (cip->buildInternalOptions , pPlatform->getClDevice (0 )->peekCompilerExtensions ())) << cip->buildInternalOptions ;
10931093}
10941094
1095+ TEST_F (ProgramTests, GivenFlagsWhenLinkingProgramThenBuildOptionsHaveBeenApplied) {
1096+ auto cip = new MockCompilerInterfaceCaptureBuildOptions ();
1097+ auto pProgram = std::make_unique<SucceedingGenBinaryProgram>(*pDevice->getExecutionEnvironment ());
1098+ pProgram->setDevice (pDevice);
1099+ pProgram->sourceCode = " __kernel mock() {}" ;
1100+ pProgram->createdFrom = Program::CreatedFrom::SOURCE;
1101+
1102+ cl_program program = pProgram.get ();
1103+
1104+ // compile successfully a kernel to be linked later
1105+ cl_int retVal = pProgram->compile (0 , nullptr , nullptr , 0 , nullptr , nullptr , nullptr , nullptr );
1106+ EXPECT_EQ (CL_SUCCESS, retVal);
1107+
1108+ // Ask to link created program with NEO::CompilerOptions::gtpinRera and NEO::CompilerOptions::greaterThan4gbBuffersRequired flags.
1109+ auto options = CompilerOptions::concatenate (CompilerOptions::greaterThan4gbBuffersRequired, CompilerOptions::gtpinRera, CompilerOptions::finiteMathOnly);
1110+
1111+ pDevice->getExecutionEnvironment ()->rootDeviceEnvironments [pDevice->getRootDeviceIndex ()]->compilerInterface .reset (cip);
1112+
1113+ retVal = pProgram->link (0 , nullptr , options.c_str (), 1 , &program, nullptr , nullptr );
1114+ EXPECT_EQ (CL_SUCCESS, retVal);
1115+
1116+ // Check build options that were applied
1117+ EXPECT_FALSE (CompilerOptions::contains (cip->buildOptions , CompilerOptions::fastRelaxedMath)) << cip->buildOptions ;
1118+ EXPECT_TRUE (CompilerOptions::contains (cip->buildOptions , CompilerOptions::finiteMathOnly)) << cip->buildOptions ;
1119+ EXPECT_TRUE (CompilerOptions::contains (cip->buildInternalOptions , CompilerOptions::gtpinRera)) << cip->buildInternalOptions ;
1120+ EXPECT_TRUE (CompilerOptions::contains (cip->buildInternalOptions , CompilerOptions::greaterThan4gbBuffersRequired)) << cip->buildInternalOptions ;
1121+ }
1122+
10951123TEST_P (ProgramFromSourceTest, GivenAdvancedOptionsWhenCreatingProgramThenSuccessIsReturned) {
10961124 std::string testFile;
10971125 size_t sourceSize = 0 ;
0 commit comments