llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: Sinkevich Artem (ArtSin) <details> <summary>Changes</summary> When using `-fsanitize-trap` with a sanitizer group that doesn't support trapping, an empty argument is passed to `err_drv_unsupported_option_argument`. Expand groups for the diagnostic. --- Full diff: https://github.com/llvm/llvm-project/pull/136549.diff 2 Files Affected: - (modified) clang/lib/Driver/SanitizerArgs.cpp (+2-2) - (modified) clang/test/Driver/fsanitize.c (+3) ``````````diff diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index f27cb813012f2..05ca2656c6522 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -286,7 +286,7 @@ parseSanitizeArgs(const Driver &D, const llvm::opt::ArgList &Args, Add & AlwaysOut & ~DiagnosedAlwaysOutViolations) { if (DiagnoseErrors) { SanitizerSet SetToDiagnose; - SetToDiagnose.Mask |= KindsToDiagnose; + SetToDiagnose.Mask |= expandSanitizerGroups(KindsToDiagnose); D.Diag(diag::err_drv_unsupported_option_argument) << Arg->getSpelling() << toString(SetToDiagnose); DiagnosedAlwaysOutViolations |= KindsToDiagnose; @@ -302,7 +302,7 @@ parseSanitizeArgs(const Driver &D, const llvm::opt::ArgList &Args, Remove & AlwaysIn & ~DiagnosedAlwaysInViolations) { if (DiagnoseErrors) { SanitizerSet SetToDiagnose; - SetToDiagnose.Mask |= KindsToDiagnose; + SetToDiagnose.Mask |= expandSanitizerGroups(KindsToDiagnose); D.Diag(diag::err_drv_unsupported_option_argument) << Arg->getSpelling() << toString(SetToDiagnose); DiagnosedAlwaysInViolations |= KindsToDiagnose; diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index c154e339941f2..434e6fd8c4a15 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -259,6 +259,9 @@ // RUN: not %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) +// RUN: not %clang --target=aarch64-linux-android31 -fsanitize-trap=memtag -march=armv8-a+memtag -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANMT-TRAP +// CHECK-SANMT-TRAP: error: unsupported argument 'memtag-stack,memtag-heap,memtag-globals' to option '-fsanitize-trap=' + // 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 // CHECK-USE-AFTER-SCOPE: -cc1{{.*}}-fsanitize-address-use-after-scope `````````` </details> https://github.com/llvm/llvm-project/pull/136549 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits