[clang] [compiler-rt] [ubsan] Display correct runtime messages for negative _BitInt (PR #96240)
Björn Pettersson via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 28 08:15:39 PDT 2024
================
@@ -125,6 +137,25 @@ class TypeDescriptor {
return 1 << (TypeInfo >> 1);
}
+ const char *getBitIntBitCountPointer() const {
+ DCHECK(isBitIntTy());
+ DCHECK(isSignedBitIntTy());
+ // Scan Name for zero and return the next address
+ const char *p = getTypeName();
+ while (*p != '\0')
+ ++p;
+ // Return the next address
+ return p + 1;
+ }
+
+ unsigned getIntegerBitCount() const {
+ DCHECK(isIntegerTy());
+ if (isSignedBitIntTy())
+ return *reinterpret_cast<const u32 *>(getBitIntBitCountPointer());
----------------
bjope wrote:
For example Value::getFloatValue() in ubsan_value.cpp is using internal_memcpy from sanitizer_libc. Maybe that is an option here.
https://github.com/llvm/llvm-project/pull/96240
More information about the cfe-commits
mailing list