[PATCH] D49324: [UBSan] Followup for silence_unsigned_overflow flag to handle negate overflows.

Max Moroz via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 13 15:54:06 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rCRT337068: [UBSan] Followup for silence_unsigned_overflow flag to handle negate overflows. (authored by Dor1s, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D49324?vs=155506&id=155525#toc

Repository:
  rCRT Compiler Runtime

https://reviews.llvm.org/D49324

Files:
  lib/ubsan/ubsan_handlers.cc
  test/ubsan/TestCases/Integer/negate-overflow.cpp


Index: lib/ubsan/ubsan_handlers.cc
===================================================================
--- lib/ubsan/ubsan_handlers.cc
+++ lib/ubsan/ubsan_handlers.cc
@@ -156,6 +156,9 @@
   if (ignoreReport(Loc, Opts, ET))
     return;
 
+  if (!IsSigned && flags()->silence_unsigned_overflow)
+    return;
+
   ScopedReport R(Opts, Loc, ET);
 
   if (IsSigned)
Index: test/ubsan/TestCases/Integer/negate-overflow.cpp
===================================================================
--- test/ubsan/TestCases/Integer/negate-overflow.cpp
+++ test/ubsan/TestCases/Integer/negate-overflow.cpp
@@ -1,10 +1,12 @@
 // RUN: %clangxx -fsanitize=signed-integer-overflow %s -o %t1 && %run %t1 2>&1 | FileCheck %s --check-prefix=CHECKS
 // RUN: %clangxx -fsanitize=unsigned-integer-overflow %s -o %t2 && %run %t2 2>&1 | FileCheck %s --check-prefix=CHECKU
+// RUN: %clangxx -fsanitize=unsigned-integer-overflow %s -o %t2 && %env_ubsan_opts=silence_unsigned_overflow=1 %run %t2 2>&1 | FileCheck %s --check-prefix=CHECKU-SILENT --allow-empty
 
 int main() {
   // CHECKS-NOT: runtime error
-  // CHECKU: negate-overflow.cpp:[[@LINE+2]]:3: runtime error: negation of 2147483648 cannot be represented in type 'unsigned int'
+  // CHECKU: negate-overflow.cpp:[[@LINE+3]]:3: runtime error: negation of 2147483648 cannot be represented in type 'unsigned int'
   // CHECKU-NOT: cast to an unsigned
+  // CHECKU-SILENT-NOT: runtime error
   -unsigned(-0x7fffffff - 1); // ok
   // CHECKS: negate-overflow.cpp:[[@LINE+2]]:3: runtime error: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself
   // CHECKU-NOT: runtime error


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49324.155525.patch
Type: text/x-patch
Size: 1669 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180713/cf6ac79a/attachment.bin>


More information about the llvm-commits mailing list