Author: Aaron Ballman Date: 2022-04-08T16:15:58-04:00 New Revision: 4aaf25b4f7d7695ada313a3159d234b84d2896b2
URL: https://github.com/llvm/llvm-project/commit/4aaf25b4f7d7695ada313a3159d234b84d2896b2 DIFF: https://github.com/llvm/llvm-project/commit/4aaf25b4f7d7695ada313a3159d234b84d2896b2.diff LOG: Revert "[MTE] Add -fsanitize=memtag* and friends." This reverts commit 8aa1490513f111afd407d87c3f07d26f65c8a686. Broke testing: https://lab.llvm.org/buildbot/#/builders/109/builds/36233 Added: clang/test/Driver/memtag.c clang/test/Lexer/has_feature_memtag_sanitizer.cpp Modified: clang/include/clang/Basic/DiagnosticDriverKinds.td clang/include/clang/Basic/Features.def clang/include/clang/Basic/Sanitizers.def clang/include/clang/Driver/Options.td clang/include/clang/Driver/SanitizerArgs.h clang/lib/CodeGen/CGDeclCXX.cpp clang/lib/CodeGen/CodeGenFunction.cpp clang/lib/CodeGen/CodeGenModule.cpp clang/lib/Driver/SanitizerArgs.cpp clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/CodeGen/memtag-attr.cpp clang/test/Driver/fsanitize.c Removed: clang/test/Driver/memtag-ld.c clang/test/Driver/memtag-stack.c clang/test/Lexer/has_feature_memtag.cpp ################################################################################ diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 1100f775ed6ab..5909fb8ad73a4 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -483,8 +483,7 @@ def err_drv_ropi_incompatible_with_cxx : Error< "ROPI is not compatible with c++">; def err_stack_tagging_requires_hardware_feature : Error< - "'-fsanitize=memtag-stack' requires hardware support (+memtag). For Armv8 or " - "Armv9, try compiling with -march=armv8a+memtag or -march=armv9a+memtag">; + "'-fsanitize=memtag' requires hardware support (+memtag)">; def err_cmse_pi_are_incompatible : Error< "cmse is not compatible with %select{RWPI|ROPI}0">; diff --git a/clang/include/clang/Basic/Features.def b/clang/include/clang/Basic/Features.def index fbaa6174f9bff..522ae5951499b 100644 --- a/clang/include/clang/Basic/Features.def +++ b/clang/include/clang/Basic/Features.def @@ -45,10 +45,7 @@ FEATURE(leak_sanitizer, FEATURE(hwaddress_sanitizer, LangOpts.Sanitize.hasOneOf(SanitizerKind::HWAddress | SanitizerKind::KernelHWAddress)) -FEATURE(memtag_stack, - LangOpts.Sanitize.has(SanitizerKind::MemtagStack)) -FEATURE(memtag_heap, - LangOpts.Sanitize.has(SanitizerKind::MemtagHeap)) +FEATURE(memtag_sanitizer, LangOpts.Sanitize.has(SanitizerKind::MemTag)) FEATURE(xray_instrument, LangOpts.XRayInstrument) FEATURE(undefined_behavior_sanitizer, LangOpts.Sanitize.hasOneOf(SanitizerKind::Undefined)) diff --git a/clang/include/clang/Basic/Sanitizers.def b/clang/include/clang/Basic/Sanitizers.def index 714934445cf95..9b8936cc520cb 100644 --- a/clang/include/clang/Basic/Sanitizers.def +++ b/clang/include/clang/Basic/Sanitizers.def @@ -56,9 +56,7 @@ SANITIZER("hwaddress", HWAddress) SANITIZER("kernel-hwaddress", KernelHWAddress) // A variant of AddressSanitizer using AArch64 MTE extension. -SANITIZER("memtag-stack", MemtagStack) -SANITIZER("memtag-heap", MemtagHeap) -SANITIZER_GROUP("memtag", MemTag, MemtagStack | MemtagHeap) +SANITIZER("memtag", MemTag) // MemorySanitizer SANITIZER("memory", Memory) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 98443b2757c93..105f0496bfffb 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1641,9 +1641,6 @@ def fsanitize_address_outline_instrumentation : Flag<["-"], "fsanitize-address-o def fno_sanitize_address_outline_instrumentation : Flag<["-"], "fno-sanitize-address-outline-instrumentation">, Group<f_clang_Group>, HelpText<"Use default code inlining logic for the address sanitizer">; -def fsanitize_memtag_mode_EQ : Joined<["-"], "fsanitize-memtag-mode=">, - Group<f_clang_Group>, - HelpText<"Set default MTE mode to 'sync' (default) or 'async'">; def fsanitize_hwaddress_experimental_aliasing : Flag<["-"], "fsanitize-hwaddress-experimental-aliasing">, Group<f_clang_Group>, diff --git a/clang/include/clang/Driver/SanitizerArgs.h b/clang/include/clang/Driver/SanitizerArgs.h index a681ad3b2e05b..d288b0151c9f7 100644 --- a/clang/include/clang/Driver/SanitizerArgs.h +++ b/clang/include/clang/Driver/SanitizerArgs.h @@ -64,8 +64,6 @@ class SanitizerArgs { llvm::AsanDetectStackUseAfterReturnMode AsanUseAfterReturn = llvm::AsanDetectStackUseAfterReturnMode::Invalid; - std::string MemtagMode; - public: /// Parses the sanitizer arguments from an argument list. SanitizerArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, @@ -99,18 +97,6 @@ class SanitizerArgs { bool needsStatsRt() const { return Stats; } bool needsScudoRt() const { return Sanitizers.has(SanitizerKind::Scudo); } - bool hasMemTag() const { return hasMemtagHeap() || hasMemtagStack(); } - bool hasMemtagHeap() const { - return Sanitizers.has(SanitizerKind::MemtagHeap); - } - bool hasMemtagStack() const { - return Sanitizers.has(SanitizerKind::MemtagStack); - } - const std::string &getMemtagMode() const { - assert(!MemtagMode.empty()); - return MemtagMode; - } - bool requiresPIE() const; bool needsUnwindTables() const; bool needsLTO() const; diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp index b4991f14ba193..52d5b27eb01cb 100644 --- a/clang/lib/CodeGen/CGDeclCXX.cpp +++ b/clang/lib/CodeGen/CGDeclCXX.cpp @@ -458,8 +458,8 @@ llvm::Function *CodeGenModule::CreateGlobalInitOrCleanUpFunction( !isInNoSanitizeList(SanitizerKind::KernelHWAddress, Fn, Loc)) Fn->addFnAttr(llvm::Attribute::SanitizeHWAddress); - if (getLangOpts().Sanitize.has(SanitizerKind::MemtagStack) && - !isInNoSanitizeList(SanitizerKind::MemtagStack, Fn, Loc)) + if (getLangOpts().Sanitize.has(SanitizerKind::MemTag) && + !isInNoSanitizeList(SanitizerKind::MemTag, Fn, Loc)) Fn->addFnAttr(llvm::Attribute::SanitizeMemTag); if (getLangOpts().Sanitize.has(SanitizerKind::Thread) && diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp index 32d329a69b9f5..aadf081654925 100644 --- a/clang/lib/CodeGen/CodeGenFunction.cpp +++ b/clang/lib/CodeGen/CodeGenFunction.cpp @@ -780,7 +780,7 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy, if (SanOpts.hasOneOf(SanitizerKind::HWAddress | SanitizerKind::KernelHWAddress)) Fn->addFnAttr(llvm::Attribute::SanitizeHWAddress); - if (SanOpts.has(SanitizerKind::MemtagStack)) + if (SanOpts.has(SanitizerKind::MemTag)) Fn->addFnAttr(llvm::Attribute::SanitizeMemTag); if (SanOpts.has(SanitizerKind::Thread)) Fn->addFnAttr(llvm::Attribute::SanitizeThread); diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index da03235c5ec4e..c9e5354d3269a 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -735,7 +735,7 @@ void CodeGenModule::Release() { LangOptions::SignReturnAddressScopeKind::None) getModule().addModuleFlag(llvm::Module::Override, "sign-return-address-buildattr", 1); - if (LangOpts.Sanitize.has(SanitizerKind::MemtagStack)) + if (LangOpts.Sanitize.has(SanitizerKind::MemTag)) getModule().addModuleFlag(llvm::Module::Override, "tag-stack-memory-buildattr", 1); diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index 885c05af4532b..86a22900df555 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -44,8 +44,8 @@ static const SanitizerMask NeedsUnwindTables = static const SanitizerMask SupportsCoverage = SanitizerKind::Address | SanitizerKind::HWAddress | SanitizerKind::KernelAddress | SanitizerKind::KernelHWAddress | - SanitizerKind::MemtagStack | SanitizerKind::MemtagHeap | - SanitizerKind::Memory | SanitizerKind::KernelMemory | SanitizerKind::Leak | + SanitizerKind::MemTag | SanitizerKind::Memory | + SanitizerKind::KernelMemory | SanitizerKind::Leak | SanitizerKind::Undefined | SanitizerKind::Integer | SanitizerKind::Bounds | SanitizerKind::ImplicitConversion | SanitizerKind::Nullability | SanitizerKind::DataFlow | SanitizerKind::Fuzzer | @@ -73,7 +73,7 @@ static const SanitizerMask CFIClasses = SanitizerKind::CFIUnrelatedCast; static const SanitizerMask CompatibleWithMinimalRuntime = TrappingSupported | SanitizerKind::Scudo | SanitizerKind::ShadowCallStack | - SanitizerKind::MemtagStack | SanitizerKind::MemtagHeap; + SanitizerKind::MemTag; enum CoverageFeature { CoverageFunc = 1 << 0, @@ -651,17 +651,6 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC, MsanParamRetval = false; } - if (AllAddedKinds & SanitizerKind::MemTag) { - StringRef S = - Args.getLastArgValue(options::OPT_fsanitize_memtag_mode_EQ, "sync"); - if (S == "async" || S == "sync") { - MemtagMode = S.str(); - } else { - D.Diag(clang::diag::err_drv_invalid_value_with_suggestion) - << "-fsanitize-memtag-mode=" << S << "{async, sync}"; - } - } - if (AllAddedKinds & SanitizerKind::Thread) { TsanMemoryAccess = Args.hasFlag( options::OPT_fsanitize_thread_memory_access, @@ -1242,8 +1231,7 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, << "-fvisibility="; } - if (Sanitizers.has(SanitizerKind::MemtagStack) && - !hasTargetFeatureMTE(CmdArgs)) + if (Sanitizers.has(SanitizerKind::MemTag) && !hasTargetFeatureMTE(CmdArgs)) TC.getDriver().Diag(diag::err_stack_tagging_requires_hardware_feature); } diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 9ba8b3b23d224..3d12f6fb8d3b7 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1014,19 +1014,6 @@ bool tools::addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args, if (SanArgs.hasCrossDsoCfi() && !AddExportDynamic) CmdArgs.push_back("--export-dynamic-symbol=__cfi_check"); - if (SanArgs.hasMemTag()) { - if (!TC.getTriple().isAndroid()) { - TC.getDriver().Diag(diag::err_drv_unsupported_opt_for_target) - << "-fsanitize=memtag*" << TC.getTriple().str(); - } - CmdArgs.push_back( - Args.MakeArgString("--android-memtag-mode=" + SanArgs.getMemtagMode())); - if (SanArgs.hasMemtagHeap()) - CmdArgs.push_back("--android-memtag-heap"); - if (SanArgs.hasMemtagStack()) - CmdArgs.push_back("--android-memtag-stack"); - } - return !StaticRuntimes.empty() || !NonWholeStaticRuntimes.empty(); } diff --git a/clang/test/CodeGen/memtag-attr.cpp b/clang/test/CodeGen/memtag-attr.cpp index 4c8a86ef0b432..924a7ccf21407 100644 --- a/clang/test/CodeGen/memtag-attr.cpp +++ b/clang/test/CodeGen/memtag-attr.cpp @@ -4,27 +4,16 @@ // RUN: %clang_cc1 -triple aarch64-unknown-linux -disable-O0-optnone \ // RUN: -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-NO %s -// RUN: %clang_cc1 -triple aarch64-unknown-linux -fsanitize=memtag-stack \ +// RUN: %clang_cc1 -triple aarch64-unknown-linux -fsanitize=memtag \ // RUN: -disable-O0-optnone -emit-llvm -o - %s | \ // RUN: FileCheck -check-prefix=CHECK-MEMTAG %s -// RUN: %clang --target=aarch64-unknown-linux -march=armv8a+memtag \ -// RUN: -fsanitize=memtag -disable-O0-optnone -S -emit-llvm -o - %s | \ -// RUN: FileCheck -check-prefix=CHECK-MEMTAG %s - -extern "C" int HasSanitizeMemTag() { return 1; } -// CHECK-NO: Function Attrs -// CHECK-NO-NOT: sanitize_memtag -// CHECK-NO-NEXT: define {{.*}} @HasSanitizeMemTag( -// CHECK-MEMTAG: Function Attrs: {{.*}} sanitize_memtag -// CHECK-MEMTAG-NEXT: define {{.*}} @HasSanitizeMemTag( +int HasSanitizeMemTag() { return 1; } +// CHECK-NO: {{Function Attrs: mustprogress noinline nounwind$}} +// CHECK-MEMTAG: Function Attrs: mustprogress noinline nounwind sanitize_memtag -extern "C" __attribute__((no_sanitize("memtag"))) int NoSanitizeQuoteAddress() { +__attribute__((no_sanitize("memtag"))) int NoSanitizeQuoteAddress() { return 0; } -// CHECK-NO: Function Attrs -// CHECK-NO-NOT: sanitize_memtag -// CHECK-NO-NEXT: define {{.*}} @NoSanitizeQuoteAddress( -// CHECK-MEMTAG: Function Attrs -// CHECK-MEMTAG-NOT: sanitize_memtag -// CHECK-MEMTAG-NEXT: define {{.*}} @NoSanitizeQuoteAddress( +// CHECK-NO: {{Function Attrs: mustprogress noinline nounwind$}} +// CHECK-MEMTAG: {{Function Attrs: mustprogress noinline nounwind$}} diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index 323b9251e64b9..dec393f67b984 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -195,13 +195,13 @@ // RUN: %clang -target aarch64-linux -fsanitize=memtag -march=armv8-a+memtag %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANMT-MT // CHECK-SANMT-MT: "-target-feature" "+mte" -// CHECK-SANMT-MT-SAME: "-fsanitize=memtag-stack,memtag-heap" +// CHECK-SANMT-MT-SAME: "-fsanitize=memtag" // RUN: %clang -target aarch64-linux -fsanitize=memtag %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANMT-NOMT-0 -// CHECK-SANMT-NOMT-0: '-fsanitize=memtag-stack' requires hardware support (+memtag) +// CHECK-SANMT-NOMT-0: '-fsanitize=memtag' requires hardware support (+memtag) // RUN: %clang -target aarch64-linux -fsanitize=memtag -I +mte %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANMT-NOMT-1 -// CHECK-SANMT-NOMT-1: '-fsanitize=memtag-stack' requires hardware support (+memtag) +// CHECK-SANMT-NOMT-1: '-fsanitize=memtag' requires hardware support (+memtag) // RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE // RUN: %clang_cl --target=x86_64-windows -fsanitize=address -fsanitize-address-use-after-scope -### -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE @@ -801,7 +801,7 @@ // CHECK-INTSAN-MINIMAL: "-fsanitize-minimal-runtime" // RUN: %clang -target aarch64-linux-android -march=armv8-a+memtag -fsanitize=memtag -fsanitize-minimal-runtime %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-MEMTAG-MINIMAL -// CHECK-MEMTAG-MINIMAL: "-fsanitize=memtag-stack,memtag-heap" +// CHECK-MEMTAG-MINIMAL: "-fsanitize=memtag" // CHECK-MEMTAG-MINIMAL: "-fsanitize-minimal-runtime" // RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined -fsanitize=function -fsanitize-minimal-runtime %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UBSAN-FUNCTION-MINIMAL diff --git a/clang/test/Driver/memtag-ld.c b/clang/test/Driver/memtag-ld.c deleted file mode 100644 index 731f17e0cb5ce..0000000000000 --- a/clang/test/Driver/memtag-ld.c +++ /dev/null @@ -1,46 +0,0 @@ -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag %s 2>&1 | FileCheck %s \ -// RUN: --check-prefixes=CHECK-SYNC,CHECK-HEAP,CHECK-STACK - -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag-stack %s 2>&1 | FileCheck %s \ -// RUN: --check-prefixes=CHECK-SYNC,CHECK-NO-HEAP,CHECK-STACK - -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag-heap %s 2>&1 | FileCheck %s \ -// RUN: --check-prefixes=CHECK-SYNC,CHECK-HEAP,CHECK-NO-STACK - -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag -fsanitize-memtag-mode=async %s 2>&1 | FileCheck %s \ -// RUN: --check-prefixes=CHECK-ASYNC,CHECK-HEAP,CHECK-STACK - -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag-stack -fsanitize-memtag-mode=async %s 2>&1 \ -// RUN: | FileCheck %s \ -// RUN: --check-prefixes=CHECK-ASYNC,CHECK-NO-HEAP,CHECK-STACK - -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag-heap -fsanitize-memtag-mode=async %s 2>&1 \ -// RUN: | FileCheck %s \ -// RUN: --check-prefixes=CHECK-ASYNC,CHECK-HEAP,CHECK-NO-STACK - -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag-heap -fsanitize-memtag-mode=asymm %s 2>&1 \ -// RUN: | FileCheck %s --check-prefixes=CHECK-INVALID-MODE - -// RUN: %clang -### --target=aarch64-linux-android -march=armv8+memtag \ -// RUN: -fsanitize=memtag-stack -fsanitize=memtag-heap \ -// RUN: -fsanitize-memtag-mode=asymm -fno-sanitize=memtag %s 2>&1 \ -// RUN: | FileCheck %s --check-prefixes=CHECK-NONE - -// CHECK-ASYNC: ld{{.*}} "--android-memtag-mode=async" -// CHECK-SYNC: ld{{.*}} "--android-memtag-mode=sync" -// CHECK-HEAP: "--android-memtag-heap" -// CHECK-NO-HEAP-NOT: "--android-memtag-heap" -// CHECK-STACK: "--android-memtag-stack" -// CHECK-NO-STACK-NOT: "--android-memtag-stack" -// CHECK-INVALID-MODE: invalid value 'asymm' in '-fsanitize-memtag-mode=', -// CHECK-INVALID-MODE-SAME: expected one of: {async, sync} -// CHECK-NONE-NOT: ld{{.*}} "--android-memtag - -void f() {} diff --git a/clang/test/Driver/memtag-stack.c b/clang/test/Driver/memtag.c similarity index 100% rename from clang/test/Driver/memtag-stack.c rename to clang/test/Driver/memtag.c diff --git a/clang/test/Lexer/has_feature_memtag.cpp b/clang/test/Lexer/has_feature_memtag.cpp deleted file mode 100644 index 6a9825b99f7fa..0000000000000 --- a/clang/test/Lexer/has_feature_memtag.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// RUN: %clang_cc1 -E -fsanitize=memtag-stack %s -o - | FileCheck --check-prefix=CHECK-MEMTAG-STACK %s -// RUN: %clang_cc1 -E -fsanitize=memtag-heap %s -o - | FileCheck --check-prefix=CHECK-MEMTAG-HEAP %s -// RUN: %clang -E -fsanitize=memtag --target=aarch64-unknown-linux -march=armv8a+memtag %s -o - \ -// RUN: | FileCheck --check-prefixes=CHECK-MEMTAG-STACK,CHECK-MEMTAG-HEAP %s -// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-MEMTAG %s - -#if __has_feature(memtag_stack) -int MemTagSanitizerStack(); -#else -int MemTagSanitizerNoStack(); -#endif - -#if __has_feature(memtag_heap) -int MemTagSanitizerHeap(); -#else -int MemTagSanitizerNoHeap(); -#endif - -// CHECK-MEMTAG-STACK: MemTagSanitizerStack -// CHECK-MEMTAG-HEAP: MemTagSanitizerHeap - -// CHECK-NO-MEMTAG: MemTagSanitizerNoStack -// CHECK-NO-MEMTAG: MemTagSanitizerNoHeap diff --git a/clang/test/Lexer/has_feature_memtag_sanitizer.cpp b/clang/test/Lexer/has_feature_memtag_sanitizer.cpp new file mode 100644 index 0000000000000..64e55d7c23cf6 --- /dev/null +++ b/clang/test/Lexer/has_feature_memtag_sanitizer.cpp @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -E -fsanitize=memtag %s -o - | FileCheck --check-prefix=CHECK-MEMTAG %s +// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-MEMTAG %s + +#if __has_feature(memtag_sanitizer) +int MemTagSanitizerEnabled(); +#else +int MemTagSanitizerDisabled(); +#endif + +// CHECK-MEMTAG: MemTagSanitizerEnabled +// CHECK-NO-MEMTAG: MemTagSanitizerDisabled _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits