diff --git a/clang/lib/Driver/XRayArgs.cpp b/clang/lib/Driver/XRayArgs.cpp --- a/clang/lib/Driver/XRayArgs.cpp +++ b/clang/lib/Driver/XRayArgs.cpp @@ -32,9 +32,14 @@ return; XRayInstrument = Args.getLastArg(options::OPT_fxray_instrument); if (Triple.isMacOSX()) { - if (Triple.getArch() != llvm::Triple::x86_64) { + switch (Triple.getArch()) { + case llvm::Triple::aarch64: + case llvm::Triple::x86_64: + break; + default: D.Diag(diag::err_drv_unsupported_opt_for_target) << XRayInstrument->getSpelling() << Triple.str(); + break; } } else if (Triple.isOSBinFormatELF()) { switch (Triple.getArch()) { diff --git a/clang/test/Driver/XRay/xray-instrument.c b/clang/test/Driver/XRay/xray-instrument.c --- a/clang/test/Driver/XRay/xray-instrument.c +++ b/clang/test/Driver/XRay/xray-instrument.c @@ -1,4 +1,5 @@ // RUN: %clang -### --target=aarch64-pc-freebsd -fxray-instrument -c %s -o /dev/null 2>&1 | FileCheck %s +// RUN: %clang -### --target=arm64-apple-macos -fxray-instrument -c %s -o /dev/null 2>&1 | FileCheck %s // RUN: %clang -### --target=x86_64-apple-darwin -fxray-instrument -c %s -o /dev/null 2>&1 | FileCheck %s // RUN: %clang -### --target=x86_64-pc-windows -fxray-instrument -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR