aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Driver/ToolChainTest.cpp
diff options
context:
space:
mode:
authorPrabhuk <prabhukr@google.com>2024-09-19 11:46:55 -0700
committerGitHub <noreply@github.com>2024-09-19 11:46:55 -0700
commitd1335fb86466221b0499db5fc8f158f1f64d9542 (patch)
treebe6f1a002a430c5fa5f354de2818e08249d62dc8 /clang/unittests/Driver/ToolChainTest.cpp
parentccfe7d4b20819a0bf8552b81b60593b76b89e65c (diff)
downloadllvm-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.cpp21
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"};