MaskRay marked 2 inline comments as done.
MaskRay added inline comments.

================
Comment at: lib/Driver/SanitizerArgs.cpp:27-30
 static const SanitizerMask NeedsUbsanRt =
     SanitizerKind::Undefined | SanitizerKind::Integer |
     SanitizerKind::ImplicitConversion | SanitizerKind::Nullability |
+    SanitizerKind::CFI | SanitizerKind::FloatDivideByZero;
----------------
rsmith wrote:
> Duplicating this list of "all sanitizers covered by the ubsan runtime" in 
> many places is leading to lots of bugs.
> 
> This change misses `getPPTransparentSanitizers()` in 
> `include/clang/Basic/Sanitizers.h`. Previous changes forgot to add 
> `UnsignedIntegerOverflow` and `LocalBounds` to that function and also here 
> and in `SupportsCoverage` and `RecoverableByDefault` below (but did update 
> `TrappingSupported` and `getSupportedSanitizers`).
> 
> A better approach would be to change `Sanitizers.def` to specify the relevant 
> properties of the sanitizer (whether it's in the ubsan runtime, whether it's 
> recoverable, whether it supports coverage, whether it supports trapping, 
> whether it affects preprocessing) along with its definition.
> This change misses getPPTransparentSanitizers() in 
> include/clang/Basic/Sanitizers.h

Thanks for pointing this out! It also missed ubsan_blacklist.txt (I think it 
still makes sense to reuse the ubsan_blacklist.txt file, as "Integer" does that 
too)

It is not in `static const SanitizerMask LegacyFsanitizeRecoverMask = 
SanitizerKind::Undefined | SanitizerKind::Integer;` but since this mask is 
legacy, I guess we do not have to touch it. AFAICT, all places have been fixed.

> A better approach would be to change Sanitizers.def to specify the relevant 
> properties of the sanitizer

I'm strongly in favor of doing this, as I learned from the process how brittle 
it is to let these masks scatter over all places.. But, can we (1) bring back 
float-divide-by-zero first, and then (2) refactor tests and make them 
target-independent, (3) fix Sanitizers.def?


================
Comment at: test/Driver/fsanitize.c:844
+
+// RUN: %clang -target x86_64-linux -fsanitize=float-divide-by-zero %s -### 
2>&1 | FileCheck %s --check-prefixes=CHECK-DIVBYZERO,CHECK-DIVBYZERO-RECOVER
+// RUN: %clang -target x86_64-linux -fsanitize=float-divide-by-zero %s 
-fno-sanitize-recover=float-divide-by-zero -### 2>&1 | FileCheck %s 
--check-prefixes=CHECK-DIVBYZERO,CHECK-DIVBYZERO-NORECOVER
----------------
rsmith wrote:
> I think these tests should be target-independent. We should support this 
> sanitizer (and indeed almost all of ubsan) regardless of the target. 
> (Currently this is true on all targets except Myriad, where the latter is 
> disallowed only due to a bug in r281071.)
Changed `-target x86_64-linux` to `-target %itanium_abi_triple`.

It seems Myriad also works - I have tried `-target sparcel-myriad`


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64317/new/

https://reviews.llvm.org/D64317



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to