[clang] 0ac597f - [NFC] Move DXC driver tests

Chris Bieneman via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 18 14:07:10 PDT 2022


Author: Chris Bieneman
Date: 2022-08-18T16:06:41-05:00
New Revision: 0ac597f3cacf60479ffd36b03766fa7462dabd78

URL: https://github.com/llvm/llvm-project/commit/0ac597f3cacf60479ffd36b03766fa7462dabd78
DIFF: https://github.com/llvm/llvm-project/commit/0ac597f3cacf60479ffd36b03766fa7462dabd78.diff

LOG: [NFC] Move DXC driver tests

The DXC driver tests don't really belong mixed in with the toolchain
tests. This pulls them out to their own file and moves the
SimpleDiagnosticConsumer into a header so it can be used by both DXC and
toolchain tests.

fast-forwarded.

Added: 
    clang/unittests/Driver/DXCModeTest.cpp
    clang/unittests/Driver/SimpleDiagnosticConsumer.h

Modified: 
    clang/unittests/Driver/CMakeLists.txt
    clang/unittests/Driver/ToolChainTest.cpp

Removed: 
    


################################################################################
diff  --git a/clang/unittests/Driver/CMakeLists.txt b/clang/unittests/Driver/CMakeLists.txt
index aced8f4c467ef..01149587d44e3 100644
--- a/clang/unittests/Driver/CMakeLists.txt
+++ b/clang/unittests/Driver/CMakeLists.txt
@@ -7,6 +7,7 @@ set(LLVM_LINK_COMPONENTS
 
 add_clang_unittest(ClangDriverTests
   DistroTest.cpp
+  DXCModeTest.cpp
   ToolChainTest.cpp
   ModuleCacheTest.cpp
   MultilibTest.cpp

diff  --git a/clang/unittests/Driver/DXCModeTest.cpp b/clang/unittests/Driver/DXCModeTest.cpp
new file mode 100644
index 0000000000000..9ff431bb6cbb7
--- /dev/null
+++ b/clang/unittests/Driver/DXCModeTest.cpp
@@ -0,0 +1,239 @@
+//===- unittests/Driver/DXCModeTest.cpp --- DXC Mode tests ----------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Unit tests for driver DXCMode.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Basic/DiagnosticIDs.h"
+#include "clang/Basic/DiagnosticOptions.h"
+#include "clang/Basic/LLVM.h"
+#include "clang/Basic/TargetOptions.h"
+#include "clang/Driver/Compilation.h"
+#include "clang/Driver/Driver.h"
+#include "clang/Driver/ToolChain.h"
+#include "clang/Frontend/CompilerInstance.h"
+#include "llvm/Support/VirtualFileSystem.h"
+#include "llvm/Support/raw_ostream.h"
+#include "gtest/gtest.h"
+#include <memory>
+
+#include "SimpleDiagnosticConsumer.h"
+
+using namespace clang;
+using namespace clang::driver;
+
+static void validateTargetProfile(
+    StringRef TargetProfile, StringRef ExpectTriple,
+    IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> &InMemoryFileSystem,
+    DiagnosticsEngine &Diags) {
+  Driver TheDriver("/bin/clang", "", Diags, "", InMemoryFileSystem);
+  std::unique_ptr<Compilation> C{TheDriver.BuildCompilation(
+      {"clang", "--driver-mode=dxc", TargetProfile.data(), "foo.hlsl"})};
+  EXPECT_TRUE(C);
+  EXPECT_STREQ(TheDriver.getTargetTriple().c_str(), ExpectTriple.data());
+  EXPECT_EQ(Diags.getNumErrors(), 0u);
+}
+
+static void validateTargetProfile(
+    StringRef TargetProfile, StringRef ExpectError,
+    IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> &InMemoryFileSystem,
+    DiagnosticsEngine &Diags, SimpleDiagnosticConsumer *DiagConsumer,
+    unsigned NumOfErrors) {
+  Driver TheDriver("/bin/clang", "", Diags, "", InMemoryFileSystem);
+  std::unique_ptr<Compilation> C{TheDriver.BuildCompilation(
+      {"clang", "--driver-mode=dxc", TargetProfile.data(), "foo.hlsl"})};
+  EXPECT_TRUE(C);
+  EXPECT_EQ(Diags.getNumErrors(), NumOfErrors);
+  EXPECT_STREQ(DiagConsumer->Errors.back().c_str(), ExpectError.data());
+  Diags.Clear();
+  DiagConsumer->clear();
+}
+
+TEST(DxcModeTest, TargetProfileValidation) {
+  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
+
+  IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFileSystem(
+      new llvm::vfs::InMemoryFileSystem);
+
+  InMemoryFileSystem->addFile("foo.hlsl", 0,
+                              llvm::MemoryBuffer::getMemBuffer("\n"));
+
+  auto *DiagConsumer = new SimpleDiagnosticConsumer;
+  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
+  DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagConsumer);
+
+  validateTargetProfile("-Tvs_6_0", "dxil--shadermodel6.0-vertex",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Ths_6_1", "dxil--shadermodel6.1-hull",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tds_6_2", "dxil--shadermodel6.2-domain",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tds_6_2", "dxil--shadermodel6.2-domain",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tgs_6_3", "dxil--shadermodel6.3-geometry",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tps_6_4", "dxil--shadermodel6.4-pixel",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tcs_6_5", "dxil--shadermodel6.5-compute",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tms_6_6", "dxil--shadermodel6.6-mesh",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tas_6_7", "dxil--shadermodel6.7-amplification",
+                        InMemoryFileSystem, Diags);
+  validateTargetProfile("-Tlib_6_x", "dxil--shadermodel6.15-library",
+                        InMemoryFileSystem, Diags);
+
+  // Invalid tests.
+  validateTargetProfile("-Tpss_6_1", "invalid profile : pss_6_1",
+                        InMemoryFileSystem, Diags, DiagConsumer, 1);
+
+  validateTargetProfile("-Tps_6_x", "invalid profile : ps_6_x",
+                        InMemoryFileSystem, Diags, DiagConsumer, 2);
+  validateTargetProfile("-Tlib_6_1", "invalid profile : lib_6_1",
+                        InMemoryFileSystem, Diags, DiagConsumer, 3);
+  validateTargetProfile("-Tfoo", "invalid profile : foo", InMemoryFileSystem,
+                        Diags, DiagConsumer, 4);
+  validateTargetProfile("", "target profile option (-T) is missing",
+                        InMemoryFileSystem, Diags, DiagConsumer, 5);
+}
+
+TEST(DxcModeTest, ValidatorVersionValidation) {
+  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
+
+  IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFileSystem(
+      new llvm::vfs::InMemoryFileSystem);
+
+  InMemoryFileSystem->addFile("foo.hlsl", 0,
+                              llvm::MemoryBuffer::getMemBuffer("\n"));
+
+  auto *DiagConsumer = new SimpleDiagnosticConsumer;
+  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
+  DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagConsumer);
+  Driver TheDriver("/bin/clang", "", Diags, "", InMemoryFileSystem);
+  std::unique_ptr<Compilation> C(TheDriver.BuildCompilation(
+      {"clang", "--driver-mode=dxc", "-Tlib_6_7", "foo.hlsl"}));
+  EXPECT_TRUE(C);
+  EXPECT_TRUE(!C->containsError());
+
+  auto &TC = C->getDefaultToolChain();
+  bool ContainsError = false;
+  auto Args = TheDriver.ParseArgStrings({"-validator-version", "1.1"}, false,
+                                        ContainsError);
+  EXPECT_FALSE(ContainsError);
+  auto DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
+  for (auto *A : Args)
+    DAL->append(A);
+
+  std::unique_ptr<llvm::opt::DerivedArgList> TranslatedArgs{
+      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None)};
+  EXPECT_NE(TranslatedArgs, nullptr);
+  if (TranslatedArgs) {
+    auto *A = TranslatedArgs->getLastArg(
+        clang::driver::options::OPT_dxil_validator_version);
+    EXPECT_NE(A, nullptr);
+    if (A)
+      EXPECT_STREQ(A->getValue(), "1.1");
+  }
+  EXPECT_EQ(Diags.getNumErrors(), 0u);
+
+  // Invalid tests.
+  Args = TheDriver.ParseArgStrings({"-validator-version", "0.1"}, false,
+                                   ContainsError);
+  EXPECT_FALSE(ContainsError);
+  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
+  for (auto *A : Args)
+    DAL->append(A);
+
+  TranslatedArgs.reset(
+      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
+  EXPECT_EQ(Diags.getNumErrors(), 1u);
+  EXPECT_STREQ(DiagConsumer->Errors.back().c_str(),
+               "invalid validator version : 0.1\nIf validator major version is "
+               "0, minor version must also be 0.");
+  Diags.Clear();
+  DiagConsumer->clear();
+
+  Args = TheDriver.ParseArgStrings({"-validator-version", "1"}, false,
+                                   ContainsError);
+  EXPECT_FALSE(ContainsError);
+  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
+  for (auto *A : Args)
+    DAL->append(A);
+
+  TranslatedArgs.reset(
+      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
+  EXPECT_EQ(Diags.getNumErrors(), 2u);
+  EXPECT_STREQ(DiagConsumer->Errors.back().c_str(),
+               "invalid validator version : 1\nFormat of validator version is "
+               "\"<major>.<minor>\" (ex:\"1.4\").");
+  Diags.Clear();
+  DiagConsumer->clear();
+
+  Args = TheDriver.ParseArgStrings({"-validator-version", "-Tlib_6_7"}, false,
+                                   ContainsError);
+  EXPECT_FALSE(ContainsError);
+  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
+  for (auto *A : Args)
+    DAL->append(A);
+
+  TranslatedArgs.reset(
+      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
+  EXPECT_EQ(Diags.getNumErrors(), 3u);
+  EXPECT_STREQ(
+      DiagConsumer->Errors.back().c_str(),
+      "invalid validator version : -Tlib_6_7\nFormat of validator version is "
+      "\"<major>.<minor>\" (ex:\"1.4\").");
+  Diags.Clear();
+  DiagConsumer->clear();
+
+  Args = TheDriver.ParseArgStrings({"-validator-version", "foo"}, false,
+                                   ContainsError);
+  EXPECT_FALSE(ContainsError);
+  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
+  for (auto *A : Args)
+    DAL->append(A);
+
+  TranslatedArgs.reset(
+      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
+  EXPECT_EQ(Diags.getNumErrors(), 4u);
+  EXPECT_STREQ(
+      DiagConsumer->Errors.back().c_str(),
+      "invalid validator version : foo\nFormat of validator version is "
+      "\"<major>.<minor>\" (ex:\"1.4\").");
+  Diags.Clear();
+  DiagConsumer->clear();
+}
+
+TEST(DxcModeTest, DefaultEntry) {
+  IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFileSystem(
+      new llvm::vfs::InMemoryFileSystem);
+
+  InMemoryFileSystem->addFile("foo.hlsl", 0,
+                              llvm::MemoryBuffer::getMemBuffer("\n"));
+
+  const char *Args[] = {"clang", "--driver-mode=dxc", "-Tcs_6_7", "foo.hlsl"};
+
+  IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+      CompilerInstance::createDiagnostics(new DiagnosticOptions());
+
+  CreateInvocationOptions CIOpts;
+  CIOpts.Diags = Diags;
+  std::unique_ptr<CompilerInvocation> CInvok =
+      createInvocation(Args, std::move(CIOpts));
+  EXPECT_TRUE(CInvok);
+  // Make sure default entry is "main".
+  EXPECT_STREQ(CInvok->getTargetOpts().HLSLEntry.c_str(), "main");
+
+  const char *EntryArgs[] = {"clang", "--driver-mode=dxc", "-Ebar", "-Tcs_6_7",
+                             "foo.hlsl"};
+  CInvok = createInvocation(EntryArgs, std::move(CIOpts));
+  EXPECT_TRUE(CInvok);
+  // Make sure "-E" will set entry.
+  EXPECT_STREQ(CInvok->getTargetOpts().HLSLEntry.c_str(), "bar");
+}

diff  --git a/clang/unittests/Driver/SimpleDiagnosticConsumer.h b/clang/unittests/Driver/SimpleDiagnosticConsumer.h
new file mode 100644
index 0000000000000..f11cccd64e379
--- /dev/null
+++ b/clang/unittests/Driver/SimpleDiagnosticConsumer.h
@@ -0,0 +1,39 @@
+//===- unittests/Driver/SimpleDiagnosticConsumer.h ------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Simple diagnostic consumer to grab up diagnostics for testing.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef CLANG_UNITTESTS_SIMPLEDIAGNOSTICCONSUMER_H
+#define CLANG_UNITTESTS_SIMPLEDIAGNOSTICCONSUMER_H
+
+#include "clang/Basic/Diagnostic.h"
+#include "llvm/ADT/SmallString.h"
+
+struct SimpleDiagnosticConsumer : public clang::DiagnosticConsumer {
+  void HandleDiagnostic(clang::DiagnosticsEngine::Level DiagLevel,
+                        const clang::Diagnostic &Info) override {
+    if (DiagLevel == clang::DiagnosticsEngine::Level::Error) {
+      Errors.emplace_back();
+      Info.FormatDiagnostic(Errors.back());
+    } else {
+      Msgs.emplace_back();
+      Info.FormatDiagnostic(Msgs.back());
+    }
+  }
+  void clear() override {
+    Msgs.clear();
+    Errors.clear();
+    DiagnosticConsumer::clear();
+  }
+  std::vector<llvm::SmallString<32>> Msgs;
+  std::vector<llvm::SmallString<32>> Errors;
+};
+
+#endif // CLANG_UNITTESTS_SIMPLEDIAGNOSTICCONSUMER_H

diff  --git a/clang/unittests/Driver/ToolChainTest.cpp b/clang/unittests/Driver/ToolChainTest.cpp
index e1c4e4eb2f55b..3faa285bf9112 100644
--- a/clang/unittests/Driver/ToolChainTest.cpp
+++ b/clang/unittests/Driver/ToolChainTest.cpp
@@ -26,6 +26,9 @@
 #include "llvm/Support/raw_ostream.h"
 #include "gtest/gtest.h"
 #include <memory>
+
+#include "SimpleDiagnosticConsumer.h"
+
 using namespace clang;
 using namespace clang::driver;
 
@@ -391,215 +394,6 @@ struct SimpleDiagnosticConsumer : public DiagnosticConsumer {
   std::vector<SmallString<32>> Errors;
 };
 
-static void validateTargetProfile(
-    StringRef TargetProfile, StringRef ExpectTriple,
-    IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> &InMemoryFileSystem,
-    DiagnosticsEngine &Diags) {
-  Driver TheDriver("/bin/clang", "", Diags, "", InMemoryFileSystem);
-  std::unique_ptr<Compilation> C{TheDriver.BuildCompilation(
-      {"clang", "--driver-mode=dxc", TargetProfile.data(), "foo.hlsl"})};
-  EXPECT_TRUE(C);
-  EXPECT_STREQ(TheDriver.getTargetTriple().c_str(), ExpectTriple.data());
-  EXPECT_EQ(Diags.getNumErrors(), 0u);
-}
-
-static void validateTargetProfile(
-    StringRef TargetProfile, StringRef ExpectError,
-    IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> &InMemoryFileSystem,
-    DiagnosticsEngine &Diags, SimpleDiagnosticConsumer *DiagConsumer,
-    unsigned NumOfErrors) {
-  Driver TheDriver("/bin/clang", "", Diags, "", InMemoryFileSystem);
-  std::unique_ptr<Compilation> C{TheDriver.BuildCompilation(
-      {"clang", "--driver-mode=dxc", TargetProfile.data(), "foo.hlsl"})};
-  EXPECT_TRUE(C);
-  EXPECT_EQ(Diags.getNumErrors(), NumOfErrors);
-  EXPECT_STREQ(DiagConsumer->Errors.back().c_str(), ExpectError.data());
-  Diags.Clear();
-  DiagConsumer->clear();
-}
-
-TEST(DxcModeTest, TargetProfileValidation) {
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
-
-  IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFileSystem(
-      new llvm::vfs::InMemoryFileSystem);
-
-  InMemoryFileSystem->addFile("foo.hlsl", 0,
-                              llvm::MemoryBuffer::getMemBuffer("\n"));
-
-  auto *DiagConsumer = new SimpleDiagnosticConsumer;
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
-  DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagConsumer);
-
-  validateTargetProfile("-Tvs_6_0", "dxil--shadermodel6.0-vertex",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Ths_6_1", "dxil--shadermodel6.1-hull",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tds_6_2", "dxil--shadermodel6.2-domain",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tds_6_2", "dxil--shadermodel6.2-domain",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tgs_6_3", "dxil--shadermodel6.3-geometry",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tps_6_4", "dxil--shadermodel6.4-pixel",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tcs_6_5", "dxil--shadermodel6.5-compute",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tms_6_6", "dxil--shadermodel6.6-mesh",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tas_6_7", "dxil--shadermodel6.7-amplification",
-                        InMemoryFileSystem, Diags);
-  validateTargetProfile("-Tlib_6_x", "dxil--shadermodel6.15-library",
-                        InMemoryFileSystem, Diags);
-
-  // Invalid tests.
-  validateTargetProfile("-Tpss_6_1", "invalid profile : pss_6_1",
-                        InMemoryFileSystem, Diags, DiagConsumer, 1);
-
-  validateTargetProfile("-Tps_6_x", "invalid profile : ps_6_x",
-                        InMemoryFileSystem, Diags, DiagConsumer, 2);
-  validateTargetProfile("-Tlib_6_1", "invalid profile : lib_6_1",
-                        InMemoryFileSystem, Diags, DiagConsumer, 3);
-  validateTargetProfile("-Tfoo", "invalid profile : foo", InMemoryFileSystem,
-                        Diags, DiagConsumer, 4);
-  validateTargetProfile("", "target profile option (-T) is missing",
-                        InMemoryFileSystem, Diags, DiagConsumer, 5);
-}
-
-TEST(DxcModeTest, ValidatorVersionValidation) {
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
-
-  IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFileSystem(
-      new llvm::vfs::InMemoryFileSystem);
-
-  InMemoryFileSystem->addFile("foo.hlsl", 0,
-                              llvm::MemoryBuffer::getMemBuffer("\n"));
-
-  auto *DiagConsumer = new SimpleDiagnosticConsumer;
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
-  DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagConsumer);
-  Driver TheDriver("/bin/clang", "", Diags, "", InMemoryFileSystem);
-  std::unique_ptr<Compilation> C(TheDriver.BuildCompilation(
-      {"clang", "--driver-mode=dxc", "-Tlib_6_7", "foo.hlsl"}));
-  EXPECT_TRUE(C);
-  EXPECT_TRUE(!C->containsError());
-
-  auto &TC = C->getDefaultToolChain();
-  bool ContainsError = false;
-  auto Args = TheDriver.ParseArgStrings({"-validator-version", "1.1"}, false,
-                                        ContainsError);
-  EXPECT_FALSE(ContainsError);
-  auto DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
-  for (auto *A : Args)
-    DAL->append(A);
-
-  std::unique_ptr<llvm::opt::DerivedArgList> TranslatedArgs{
-      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None)};
-  EXPECT_NE(TranslatedArgs, nullptr);
-  if (TranslatedArgs) {
-    auto *A = TranslatedArgs->getLastArg(
-        clang::driver::options::OPT_dxil_validator_version);
-    EXPECT_NE(A, nullptr);
-    if (A)
-      EXPECT_STREQ(A->getValue(), "1.1");
-  }
-  EXPECT_EQ(Diags.getNumErrors(), 0u);
-
-  // Invalid tests.
-  Args = TheDriver.ParseArgStrings({"-validator-version", "0.1"}, false,
-                                   ContainsError);
-  EXPECT_FALSE(ContainsError);
-  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
-  for (auto *A : Args)
-    DAL->append(A);
-
-  TranslatedArgs.reset(
-      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
-  EXPECT_EQ(Diags.getNumErrors(), 1u);
-  EXPECT_STREQ(DiagConsumer->Errors.back().c_str(),
-               "invalid validator version : 0.1\nIf validator major version is "
-               "0, minor version must also be 0.");
-  Diags.Clear();
-  DiagConsumer->clear();
-
-  Args = TheDriver.ParseArgStrings({"-validator-version", "1"}, false,
-                                   ContainsError);
-  EXPECT_FALSE(ContainsError);
-  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
-  for (auto *A : Args)
-    DAL->append(A);
-
-  TranslatedArgs.reset(
-      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
-  EXPECT_EQ(Diags.getNumErrors(), 2u);
-  EXPECT_STREQ(DiagConsumer->Errors.back().c_str(),
-               "invalid validator version : 1\nFormat of validator version is "
-               "\"<major>.<minor>\" (ex:\"1.4\").");
-  Diags.Clear();
-  DiagConsumer->clear();
-
-  Args = TheDriver.ParseArgStrings({"-validator-version", "-Tlib_6_7"}, false,
-                                   ContainsError);
-  EXPECT_FALSE(ContainsError);
-  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
-  for (auto *A : Args)
-    DAL->append(A);
-
-  TranslatedArgs.reset(
-      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
-  EXPECT_EQ(Diags.getNumErrors(), 3u);
-  EXPECT_STREQ(
-      DiagConsumer->Errors.back().c_str(),
-      "invalid validator version : -Tlib_6_7\nFormat of validator version is "
-      "\"<major>.<minor>\" (ex:\"1.4\").");
-  Diags.Clear();
-  DiagConsumer->clear();
-
-  Args = TheDriver.ParseArgStrings({"-validator-version", "foo"}, false,
-                                   ContainsError);
-  EXPECT_FALSE(ContainsError);
-  DAL = std::make_unique<llvm::opt::DerivedArgList>(Args);
-  for (auto *A : Args)
-    DAL->append(A);
-
-  TranslatedArgs.reset(
-      TC.TranslateArgs(*DAL, "0", Action::OffloadKind::OFK_None));
-  EXPECT_EQ(Diags.getNumErrors(), 4u);
-  EXPECT_STREQ(
-      DiagConsumer->Errors.back().c_str(),
-      "invalid validator version : foo\nFormat of validator version is "
-      "\"<major>.<minor>\" (ex:\"1.4\").");
-  Diags.Clear();
-  DiagConsumer->clear();
-}
-
-TEST(DxcModeTest, DefaultEntry) {
-  IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFileSystem(
-      new llvm::vfs::InMemoryFileSystem);
-
-  InMemoryFileSystem->addFile("foo.hlsl", 0,
-                              llvm::MemoryBuffer::getMemBuffer("\n"));
-
-  const char *Args[] = {"clang", "--driver-mode=dxc", "-Tcs_6_7", "foo.hlsl"};
-
-  IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
-      CompilerInstance::createDiagnostics(new DiagnosticOptions());
-
-  CreateInvocationOptions CIOpts;
-  CIOpts.Diags = Diags;
-  std::unique_ptr<CompilerInvocation> CInvok =
-      createInvocation(Args, std::move(CIOpts));
-  EXPECT_TRUE(CInvok);
-  // Make sure default entry is "main".
-  EXPECT_STREQ(CInvok->getTargetOpts().HLSLEntry.c_str(), "main");
-
-  const char *EntryArgs[] = {"clang", "--driver-mode=dxc", "-Ebar", "-Tcs_6_7", "foo.hlsl"};
-  CInvok = createInvocation(EntryArgs, std::move(CIOpts));
-  EXPECT_TRUE(CInvok);
-  // Make sure "-E" will set entry.
-  EXPECT_STREQ(CInvok->getTargetOpts().HLSLEntry.c_str(), "bar");
-}
-
 TEST(ToolChainTest, Toolsets) {
   // Ignore this test on Windows hosts.
   llvm::Triple Host(llvm::sys::getProcessTriple());


        


More information about the cfe-commits mailing list