aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorchenglin.bi <chenglin.bi@cixcomputing.com>2022-10-03 21:20:33 +0800
committerchenglin.bi <chenglin.bi@cixcomputing.com>2022-10-03 21:20:51 +0800
commitb0fff3db6ada11e42a28389bb2b0c48181e2f719 (patch)
treef5a27c2866224784fbb76e4b63e085b6d10d6370 /clang/lib/Driver/Driver.cpp
parent248237364b7df8b3216a9f44ffceeff6807eaa97 (diff)
downloadllvm-b0fff3db6ada11e42a28389bb2b0c48181e2f719.zip
llvm-b0fff3db6ada11e42a28389bb2b0c48181e2f719.tar.gz
llvm-b0fff3db6ada11e42a28389bb2b0c48181e2f719.tar.bz2
[ARM64EC][clang-cl] Add /arm64EC flag
Reviewed By: DavidSpickett Differential Revision: https://reviews.llvm.org/D134788
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index a4bd2de..be62ce5 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -1256,6 +1256,8 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
T.setVendor(llvm::Triple::PC);
T.setEnvironment(llvm::Triple::MSVC);
T.setObjectFormat(llvm::Triple::COFF);
+ if (Args.hasArg(options::OPT__SLASH_arm64EC))
+ T.setArch(llvm::Triple::aarch64, llvm::Triple::AArch64SubArch_arm64ec);
TargetTriple = T.str();
} else if (IsDXCMode()) {
// Build TargetTriple from target_profile option for clang-dxc.
@@ -1380,6 +1382,14 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
const ToolChain &TC = getToolChain(
*UArgs, computeTargetTriple(*this, TargetTriple, *UArgs));
+ // Report warning when arm64EC option is overridden by specified target
+ if ((TC.getTriple().getArch() != llvm::Triple::aarch64 ||
+ TC.getTriple().getSubArch() != llvm::Triple::AArch64SubArch_arm64ec) &&
+ UArgs->hasArg(options::OPT__SLASH_arm64EC)) {
+ getDiags().Report(clang::diag::warn_target_override_arm64ec)
+ << TC.getTriple().str();
+ }
+
// The compilation takes ownership of Args.
Compilation *C = new Compilation(*this, TC, UArgs.release(), TranslatedArgs,
ContainsError);