Index: compiler-rt/trunk/lib/hwasan/hwasan_checks.h =================================================================== --- compiler-rt/trunk/lib/hwasan/hwasan_checks.h +++ compiler-rt/trunk/lib/hwasan/hwasan_checks.h @@ -61,7 +61,8 @@ template __attribute__((always_inline, nodebug)) static void CheckAddressSized(uptr p, uptr sz) { - CHECK_NE(0, sz); + if (sz == 0) + return; tag_t ptr_tag = GetTagFromPointer(p); uptr ptr_raw = p & ~kAddressTagMask; tag_t *shadow_first = (tag_t *)MemToShadow(ptr_raw); Index: compiler-rt/trunk/test/hwasan/TestCases/mem-intrinsics-zero-size.c =================================================================== --- compiler-rt/trunk/test/hwasan/TestCases/mem-intrinsics-zero-size.c +++ compiler-rt/trunk/test/hwasan/TestCases/mem-intrinsics-zero-size.c @@ -0,0 +1,10 @@ +// RUN: %clang_hwasan %s -o %t && %run %t + +#include + +int main() { + char a[1]; + memset(a, 0, 0); + memmove(a, a, 0); + memcpy(a, a, 0); +}