@@ -566,18 +566,102 @@ TEST_F(CommandLineTest, ConditionalParsingIfFalseFlagPresent) {
566
566
ASSERT_THAT (GeneratedArgs, Not (Contains (HasSubstr (" -sycl-std=" ))));
567
567
}
568
568
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) {
570
638
const char *Args[] = {" -fsycl-is-host" };
571
639
572
640
CompilerInvocation::CreateFromArgs (Invocation, Args, *Diags);
573
641
574
642
ASSERT_FALSE (Diags->hasErrorOccurred ());
575
- ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (), LangOptions::SYCL_None);
643
+ ASSERT_EQ (Invocation.getLangOpts ()->getSYCLVersion (),
644
+ LangOptions::SYCL_Default);
576
645
577
646
Invocation.generateCC1CommandLine (GeneratedArgs, *this );
578
647
579
648
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=" )));
581
665
}
582
666
583
667
TEST_F (CommandLineTest, ConditionalParsingIfTrueFlagPresent) {
0 commit comments