diff options
author | Prabhuk <prabhukr@google.com> | 2024-09-19 11:46:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-19 11:46:55 -0700 |
commit | d1335fb86466221b0499db5fc8f158f1f64d9542 (patch) | |
tree | be6f1a002a430c5fa5f354de2818e08249d62dc8 /clang/unittests/Driver/ToolChainTest.cpp | |
parent | ccfe7d4b20819a0bf8552b81b60593b76b89e65c (diff) | |
download | llvm-d1335fb86466221b0499db5fc8f158f1f64d9542.zip llvm-d1335fb86466221b0499db5fc8f158f1f64d9542.tar.gz llvm-d1335fb86466221b0499db5fc8f158f1f64d9542.tar.bz2 |
[Driver] Add toolchain for X86_64 UEFI target (#76838)
Introduce changes necessary for UEFI X86_64 target Clang driver.
Addressed the review comments originally suggested in Phabricator.
Differential Revision: https://reviews.llvm.org/D159541
Diffstat (limited to 'clang/unittests/Driver/ToolChainTest.cpp')
-rw-r--r-- | clang/unittests/Driver/ToolChainTest.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/unittests/Driver/ToolChainTest.cpp b/clang/unittests/Driver/ToolChainTest.cpp index 6c8b32d..672742c 100644 --- a/clang/unittests/Driver/ToolChainTest.cpp +++ b/clang/unittests/Driver/ToolChainTest.cpp @@ -14,6 +14,7 @@ #include "clang/Basic/DiagnosticIDs.h" #include "clang/Basic/DiagnosticOptions.h" #include "clang/Basic/LLVM.h" +#include "clang/Basic/TargetInfo.h" #include "clang/Basic/TargetOptions.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" @@ -574,6 +575,26 @@ TEST(CompilerInvocation, SplitSwarfSingleCrash) { EXPECT_TRUE(CI); // no-crash } +TEST(ToolChainTest, UEFICallingConventionTest) { + clang::CompilerInstance compiler; + compiler.createDiagnostics(); + + std::string TrStr = "x86_64-unknown-uefi"; + llvm::Triple Tr(TrStr); + Tr.setOS(llvm::Triple::OSType::UEFI); + Tr.setVendor(llvm::Triple::VendorType::UnknownVendor); + Tr.setEnvironment(llvm::Triple::EnvironmentType::UnknownEnvironment); + Tr.setArch(llvm::Triple::ArchType::x86_64); + + compiler.getTargetOpts().Triple = Tr.getTriple(); + compiler.setTarget(clang::TargetInfo::CreateTargetInfo( + compiler.getDiagnostics(), + std::make_shared<clang::TargetOptions>(compiler.getTargetOpts()))); + + EXPECT_EQ(compiler.getTarget().getCallingConvKind(true), + TargetInfo::CallingConvKind::CCK_MicrosoftWin64); +} + TEST(GetDriverMode, PrefersLastDriverMode) { static constexpr const char *Args[] = {"clang-cl", "--driver-mode=foo", "--driver-mode=bar", "foo.cpp"}; |