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

Reply via email to