llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-codegen Author: Vitaly Buka (vitalybuka) <details> <summary>Changes</summary> --- Full diff: https://github.com/llvm/llvm-project/pull/86739.diff 3 Files Affected: - (modified) clang/lib/CodeGen/BackendUtil.cpp (+10-4) - (modified) clang/test/CodeGen/asan-new-pm.ll (+8-1) - (modified) clang/test/CodeGen/hwasan-new-pm.c (+20-2) ``````````diff diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 82b30b8d815629..75ba3f2c3785de 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -717,8 +717,11 @@ static void addSanitizers(const Triple &TargetTriple, DestructorKind)); } }; - ASanPass(SanitizerKind::Address, false); - ASanPass(SanitizerKind::KernelAddress, true); + // Don't slow down already slow `ProfileIRInstr` binary. + if (!CodeGenOpts.hasProfileIRInstr()) { + ASanPass(SanitizerKind::Address, false); + ASanPass(SanitizerKind::KernelAddress, true); + } auto HWASanPass = [&](SanitizerMask Mask, bool CompileKernel) { if (LangOpts.Sanitize.has(Mask)) { @@ -728,8 +731,11 @@ static void addSanitizers(const Triple &TargetTriple, /*DisableOptimization=*/CodeGenOpts.OptimizationLevel == 0})); } }; - HWASanPass(SanitizerKind::HWAddress, false); - HWASanPass(SanitizerKind::KernelHWAddress, true); + // Don't slow down already slow `ProfileIRInstr` binary. + if (!CodeGenOpts.hasProfileIRInstr()) { + HWASanPass(SanitizerKind::HWAddress, false); + HWASanPass(SanitizerKind::KernelHWAddress, true); + } if (LangOpts.Sanitize.has(SanitizerKind::DataFlow)) { MPM.addPass(DataFlowSanitizerPass(LangOpts.NoSanitizeFiles)); diff --git a/clang/test/CodeGen/asan-new-pm.ll b/clang/test/CodeGen/asan-new-pm.ll index 78d195b0ea2471..528dc1f7a7c400 100644 --- a/clang/test/CodeGen/asan-new-pm.ll +++ b/clang/test/CodeGen/asan-new-pm.ll @@ -1,6 +1,12 @@ ; Test that ASan runs with the new pass manager ; RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - -fsanitize=address %s | FileCheck %s -; RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - -O1 -fsanitize=address %s | FileCheck %s +; RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - -fsanitize=address -O1 %s | FileCheck %s + +; RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - -fsanitize=address -fprofile-instrument=llvm %s | FileCheck %s -check-prefixes=NOASAN +; RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - -fsanitize=address -fprofile-instrument=llvm -O1 %s | FileCheck %s -check-prefixes=NOASAN + +; RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - -fsanitize=address -fprofile-instrument=clang %s | FileCheck %s +; RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - -fsanitize=address -fprofile-instrument=clang -O1 %s | FileCheck %s ; CHECK-DAG: @llvm.global_ctors = {{.*}}@asan.module_ctor @@ -20,3 +26,4 @@ entry: ; CHECK-DAG: __asan_version_mismatch_check_v8 +; NOASAN-NOT: __asan \ No newline at end of file diff --git a/clang/test/CodeGen/hwasan-new-pm.c b/clang/test/CodeGen/hwasan-new-pm.c index 47014698f6df72..8f5a25c82df222 100644 --- a/clang/test/CodeGen/hwasan-new-pm.c +++ b/clang/test/CodeGen/hwasan-new-pm.c @@ -3,12 +3,30 @@ // being instrumented properly. // RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=hwaddress %s | FileCheck %s -// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -O1 -fsanitize=hwaddress %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=hwaddress -O1 %s | FileCheck %s + +// Don't instrument when collecting profiles, to avoid additional slowdown of slow `profile-instrument` binary. +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=hwaddress -fprofile-instrument=llvm %s | FileCheck %s -check-prefixes=NOHWASAN +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=hwaddress -fprofile-instrument=llvm -O1 %s | FileCheck %s -check-prefixes=NOHWASAN + +// Nothing special is done for clang PGO. +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=hwaddress -fprofile-instrument=clang %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=hwaddress -fprofile-instrument=clang -O1 %s | FileCheck %s // RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=kernel-hwaddress %s | FileCheck %s -// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -O1 -fsanitize=kernel-hwaddress %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=kernel-hwaddress -O1 %s | FileCheck %s + +// Don't instrument when collecting profiles, to avoid additional slowdown of slow `profile-instrument` binary. +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=kernel-hwaddress -fprofile-instrument=llvm %s | FileCheck %s -check-prefixes=NOHWASAN +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=kernel-hwaddress -fprofile-instrument=llvm -O1 %s | FileCheck %s -check-prefixes=NOHWASAN + +// Nothing special is done for clang PGO. +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=kernel-hwaddress -fprofile-instrument=clang %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -emit-llvm -o - -fsanitize=kernel-hwaddress -fprofile-instrument=clang -O1 %s | FileCheck %s int foo(int *a) { return *a; } // All the cases above mark the function with sanitize_hwaddress. // CHECK: sanitize_hwaddress +// CHECK: declare void @__hwasan_ +// NOHWASAN-NOT: __hwasan `````````` </details> https://github.com/llvm/llvm-project/pull/86739 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits