@@ -566,18 +566,102 @@ TEST_F(CommandLineTest, ConditionalParsingIfFalseFlagPresent) {
566566 ASSERT_THAT (GeneratedArgs, Not (Contains (HasSubstr (" -sycl-std=" ))));
567567}
568568
569- TEST_F (CommandLineTest, ConditionalParsingIfTrueFlagNotPresent) {
569+ TEST_F (CommandLineTest, ConditionalParsingIfNonsenseSyclStdArg) {
570+ const char *Args[] = {" -fsycl-is-device" , " -sycl-std=garbage" };
571+
572+ CompilerInvocation::CreateFromArgs (Invocation, Args, *Diags);
573+
574+ ASSERT_TRUE (Diags->hasErrorOccurred ());
575+ ASSERT_TRUE (Invocation.getLangOpts ()->SYCLIsDevice );
576+ ASSERT_FALSE (Invocation.getLangOpts ()->SYCLIsHost );
577+ ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (), LangOptions::SYCL_None);
578+
579+ Invocation.generateCC1CommandLine (GeneratedArgs, *this );
580+
581+ ASSERT_THAT (GeneratedArgs, Contains (StrEq (" -fsycl-is-device" )));
582+ ASSERT_THAT (GeneratedArgs, Not (Contains (StrEq (" -fsycl-is-host" ))));
583+ ASSERT_THAT (GeneratedArgs, Not (Contains (HasSubstr (" -sycl-std=" ))));
584+ }
585+
586+ TEST_F (CommandLineTest, ConditionalParsingIfOddSyclStdArg1) {
587+ const char *Args[] = {" -fsycl-is-device" , " -sycl-std=121" };
588+
589+ CompilerInvocation::CreateFromArgs (Invocation, Args, *Diags);
590+
591+ ASSERT_FALSE (Diags->hasErrorOccurred ());
592+ ASSERT_TRUE (Invocation.getLangOpts ()->SYCLIsDevice );
593+ ASSERT_FALSE (Invocation.getLangOpts ()->SYCLIsHost );
594+ ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (), LangOptions::SYCL_2017);
595+
596+ Invocation.generateCC1CommandLine (GeneratedArgs, *this );
597+
598+ ASSERT_THAT (GeneratedArgs, Contains (StrEq (" -fsycl-is-device" )));
599+ ASSERT_THAT (GeneratedArgs, Not (Contains (StrEq (" -fsycl-is-host" ))));
600+ ASSERT_THAT (GeneratedArgs, Contains (HasSubstr (" -sycl-std=2017" )));
601+ }
602+
603+ TEST_F (CommandLineTest, ConditionalParsingIfOddSyclStdArg2) {
604+ const char *Args[] = {" -fsycl-is-device" , " -sycl-std=1.2.1" };
605+
606+ CompilerInvocation::CreateFromArgs (Invocation, Args, *Diags);
607+
608+ ASSERT_FALSE (Diags->hasErrorOccurred ());
609+ ASSERT_TRUE (Invocation.getLangOpts ()->SYCLIsDevice );
610+ ASSERT_FALSE (Invocation.getLangOpts ()->SYCLIsHost );
611+ ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (), LangOptions::SYCL_2017);
612+
613+ Invocation.generateCC1CommandLine (GeneratedArgs, *this );
614+
615+ ASSERT_THAT (GeneratedArgs, Contains (StrEq (" -fsycl-is-device" )));
616+ ASSERT_THAT (GeneratedArgs, Not (Contains (StrEq (" -fsycl-is-host" ))));
617+ ASSERT_THAT (GeneratedArgs, Contains (HasSubstr (" -sycl-std=2017" )));
618+ }
619+
620+ TEST_F (CommandLineTest, ConditionalParsingIfOddSyclStdArg3) {
621+ const char *Args[] = {" -fsycl-is-device" , " -sycl-std=sycl-1.2.1" };
622+
623+ CompilerInvocation::CreateFromArgs (Invocation, Args, *Diags);
624+
625+ ASSERT_FALSE (Diags->hasErrorOccurred ());
626+ ASSERT_TRUE (Invocation.getLangOpts ()->SYCLIsDevice );
627+ ASSERT_FALSE (Invocation.getLangOpts ()->SYCLIsHost );
628+ ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (), LangOptions::SYCL_2017);
629+
630+ Invocation.generateCC1CommandLine (GeneratedArgs, *this );
631+
632+ ASSERT_THAT (GeneratedArgs, Contains (StrEq (" -fsycl-is-device" )));
633+ ASSERT_THAT (GeneratedArgs, Not (Contains (StrEq (" -fsycl-is-host" ))));
634+ ASSERT_THAT (GeneratedArgs, Contains (HasSubstr (" -sycl-std=2017" )));
635+ }
636+
637+ TEST_F (CommandLineTest, ConditionalParsingIfTrueFlagNotPresentHost) {
570638 const char *Args[] = {" -fsycl-is-host" };
571639
572640 CompilerInvocation::CreateFromArgs (Invocation, Args, *Diags);
573641
574642 ASSERT_FALSE (Diags->hasErrorOccurred ());
575- ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (), LangOptions::SYCL_None);
643+ ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (),
644+ LangOptions::SYCL_Default);
576645
577646 Invocation.generateCC1CommandLine (GeneratedArgs, *this );
578647
579648 ASSERT_THAT (GeneratedArgs, Contains (StrEq (" -fsycl-is-host" )));
580- ASSERT_THAT (GeneratedArgs, Not (Contains (HasSubstr (" -sycl-std=" ))));
649+ ASSERT_THAT (GeneratedArgs, Contains (HasSubstr (" -sycl-std=" )));
650+ }
651+
652+ TEST_F (CommandLineTest, ConditionalParsingIfTrueFlagNotPresentDevice) {
653+ const char *Args[] = {" -fsycl-is-device" };
654+
655+ CompilerInvocation::CreateFromArgs (Invocation, Args, *Diags);
656+
657+ ASSERT_FALSE (Diags->hasErrorOccurred ());
658+ ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (),
659+ LangOptions::SYCL_Default);
660+
661+ Invocation.generateCC1CommandLine (GeneratedArgs, *this );
662+
663+ ASSERT_THAT (GeneratedArgs, Contains (StrEq (" -fsycl-is-device" )));
664+ ASSERT_THAT (GeneratedArgs, Contains (HasSubstr (" -sycl-std=" )));
581665}
582666
583667TEST_F (CommandLineTest, ConditionalParsingIfTrueFlagPresent) {
0 commit comments