[compiler-rt] r250806 - [ubsan] Fix looksLikeFloatCastOverflowDataV1 heuristic to work if one of the types is unknown.

Yury Gribov via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 20 01:40:53 PDT 2015


Author: ygribov
Date: Tue Oct 20 03:40:52 2015
New Revision: 250806

URL: http://llvm.org/viewvc/llvm-project?rev=250806&view=rev
Log:
[ubsan] Fix looksLikeFloatCastOverflowDataV1 heuristic to work if one of the types is unknown.

Differential revision: http://reviews.llvm.org/D13775

Modified:
    compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc

Modified: compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc?rev=250806&r1=250805&r2=250806&view=diff
==============================================================================
--- compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc (original)
+++ compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc Tue Oct 20 03:40:52 2015
@@ -314,12 +314,14 @@ static bool looksLikeFloatCastOverflowDa
                   sizeof(FilenameOrTypeDescriptor));
 
   // Heuristic: For float_cast_overflow, the TypeKind will be either TK_Integer
-  // (0x0) or TK_Float (0x1). Adding both bytes will be 0 or 1 (for BE or LE).
-  // If it were a filename, adding two printable characters will not yield such
-  // a value.
+  // (0x0), TK_Float (0x1) or TK_Unknown (0xff). If both types are known,
+  // adding both bytes will be 0 or 1 (for BE or LE). If it were a filename,
+  // adding two printable characters will not yield such a value. Otherwise,
+  // if one of them is 0xff, this is most likely TK_Unknown type descriptor.
   u16 MaybeFromTypeKind =
       FilenameOrTypeDescriptor[0] + FilenameOrTypeDescriptor[1];
-  return MaybeFromTypeKind < 2;
+  return MaybeFromTypeKind < 2 || FilenameOrTypeDescriptor[0] == 0xff ||
+         FilenameOrTypeDescriptor[1] == 0xff;
 }
 
 static void handleFloatCastOverflow(void *DataPtr, ValueHandle From,




More information about the llvm-commits mailing list