[PATCH] D134788: [ARM64EC][clang-cl] Add /arm64EC flag
chenglin.bi via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 28 19:16:20 PDT 2022
bcl5980 updated this revision to Diff 463744.
bcl5980 added a comment.
add warning when /arm64EC has been override
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134788/new/
https://reviews.llvm.org/D134788
Files:
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/include/clang/Driver/Options.td
clang/lib/Driver/Driver.cpp
clang/test/Driver/cl-options.c
Index: clang/test/Driver/cl-options.c
===================================================================
--- clang/test/Driver/cl-options.c
+++ clang/test/Driver/cl-options.c
@@ -783,4 +783,10 @@
// EXTERNAL_W0: "-Wno-system-headers"
// EXTERNAL_Wn: "-Wsystem-headers"
+// RUN: %clang_cl -vctoolsdir "" /arm64EC /c -### -- %s 2>&1 | FileCheck %s --check-prefix ARM64EC
+// ARM64EC: "-triple" "arm64ec-pc-windows-msvc19.20.0"
+
+// RUN: %clang_cl -vctoolsdir "" /arm64EC /c -target x86_64-pc-windows-msvc -### -- %s 2>&1 | FileCheck %s --check-prefix ARM64EC_OVERRIDE
+// ARM64EC_OVERRIDE: warning: /arm64EC overrided by specifying target:x86_64-pc-windows-msvc; option ignored
+
void f(void) { }
Index: clang/lib/Driver/Driver.cpp
===================================================================
--- clang/lib/Driver/Driver.cpp
+++ clang/lib/Driver/Driver.cpp
@@ -1252,6 +1252,8 @@
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.
@@ -1376,6 +1378,15 @@
const ToolChain &TC = getToolChain(
*UArgs, computeTargetTriple(*this, TargetTriple, *UArgs));
+ // Report warning when arm64EC option is overrided by specified target
+ if (TC.getTriple().getArch() != llvm::Triple::aarch64 ||
+ TC.getTriple().getSubArch() != llvm::Triple::AArch64SubArch_arm64ec) {
+ if (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);
Index: clang/include/clang/Driver/Options.td
===================================================================
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -6695,6 +6695,8 @@
def _SLASH_QIntel_jcc_erratum : CLFlag<"QIntel-jcc-erratum">,
HelpText<"Align branches within 32-byte boundaries to mitigate the performance impact of the Intel JCC erratum.">,
Alias<mbranches_within_32B_boundaries>;
+def _SLASH_arm64EC : CLFlag<"arm64EC">,
+ HelpText<"Set build target to arm64ec">;
// Non-aliases:
Index: clang/include/clang/Basic/DiagnosticDriverKinds.td
===================================================================
--- clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -660,6 +660,10 @@
"-fjmc works only for ELF; option ignored">,
InGroup<OptionIgnored>;
+def warn_target_override_arm64ec : Warning<
+ "/arm64EC overrided by specifying target:%0; option ignored">,
+ InGroup<OptionIgnored>;
+
def err_drv_target_variant_invalid : Error<
"unsupported '%0' value '%1'; use 'ios-macabi' instead">;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134788.463744.patch
Type: text/x-patch
Size: 3097 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220929/981ae40c/attachment.bin>
More information about the cfe-commits
mailing list