forked from OSchip/llvm-project
[ARM64EC][clang-cl] Add /arm64EC flag
Reviewed By: DavidSpickett Differential Revision: https://reviews.llvm.org/D134788
This commit is contained in:
parent
248237364b
commit
b0fff3db6a
|
@ -655,6 +655,10 @@ def warn_drv_fjmc_for_elf_only : Warning<
|
|||
"-fjmc works only for ELF; option ignored">,
|
||||
InGroup<OptionIgnored>;
|
||||
|
||||
def warn_target_override_arm64ec : Warning<
|
||||
"/arm64EC has been overridden by specified target: %0; option ignored">,
|
||||
InGroup<OptionIgnored>;
|
||||
|
||||
def err_drv_target_variant_invalid : Error<
|
||||
"unsupported '%0' value '%1'; use 'ios-macabi' instead">;
|
||||
|
||||
|
|
|
@ -6695,6 +6695,8 @@ def _SLASH_tune : CLCompileJoined<"tune:">,
|
|||
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:
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -782,4 +782,8 @@
|
|||
// 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"
|
||||
// ARM64EC-NOT: /arm64EC has been overridden by specified target
|
||||
|
||||
void f(void) { }
|
||||
|
|
Loading…
Reference in New Issue