vsk added inline comments.
================ Comment at: clang/test/Driver/fsanitize.c:911 +// CHECK-unsigned-shift-base-RECOVER-NOT: "-fsanitize-trap=unsigned-shift-base" +// CHECK-unsigned-shift-base-NORECOVER-NOT: "-fno-sanitize-recover=unsigned-shift-base" +// CHECK-unsigned-shift-base-NORECOVER-NOT: "-fsanitize-recover=unsigned-shift-base" ---------------- jfb wrote: > vsk wrote: > > Not sure I follow this one. Why is 'NORECOVER' not expecting to see > > "-fno-sanitize-recover=unsigned-shift-base"? > I have no idea! Other parts of this file do this: > ``` > // CHECK-implicit-conversion-NORECOVER-NOT: > "-fno-sanitize-recover={{((implicit-unsigned-integer-truncation|implicit-signed-integer-truncation|implicit-integer-sign-change),?){3}"}} > // ??? > // CHECK-implicit-integer-arithmetic-value-change-NORECOVER-NOT: > "-fno-sanitize-recover={{((implicit-signed-integer-truncation|implicit-integer-sign-change),?){2}"}} > // ??? > // CHECK-implicit-integer-truncation-NORECOVER-NOT: > "-fno-sanitize-recover={{((implicit-unsigned-integer-truncation|implicit-signed-integer-truncation),?){2}"}} > // ??? > ``` > I was hoping someone who's touched this before would know. The CHECK-implicit-conversion-NORECOVER-NOT regex looks fishy. There's more parens in there than I'd expect: perhaps that explains why the test passes? Just above your change, I see something that's closer to what I expect: ``` // RUN: %clang -fsanitize=float-divide-by-zero %s -fno-sanitize-recover=float-divide-by-zero -### 2>&1 | FileCheck %s --check-prefixes=CHECK-DIVBYZERO,CHECK-DIVBYZERO-NORECOVER ... // CHECK-DIVBYZERO-NORECOVER-NOT: "-fsanitize-recover=float-divide-by-zero" ``` ================ Comment at: compiler-rt/test/ubsan/TestCases/Integer/unsigned-shift.cpp:2 +// RUN: %clangxx -fsanitize=unsigned-shift-base %s -o %t1 && not %run %t1 2>&1 | FileCheck %s +// RUN: %clangxx -fsanitize=unsigned-shift-base,shift-exponent %s -o %t1 && not %run %t1 2>&1 | FileCheck %s + ---------------- jfb wrote: > I don't understand this test... when I run it with lit it fails (and it seems > like the bots agree), but manually it works. Am I doing it wrong? Do you need to explicitly `return 1` or something to get a non-zero exit code? ================ Comment at: compiler-rt/test/ubsan/TestCases/Integer/unsigned-shift.cpp:6 + volatile unsigned _v = (val); \ + volatile unsigned _a = (amount); \ + unsigned res = _v << _a; \ ---------------- Does the test not work without the volatiles? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D86000/new/ https://reviews.llvm.org/D86000 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits