[compiler-rt] 0984843 - [NFC][hwasan] Return to one loop in CopyShadow

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 21 17:21:38 PDT 2023


Author: Vitaly Buka
Date: 2023-09-21T17:19:36-07:00
New Revision: 0984843d7f376e12bfd75fe5e8aae302c8abb6d7

URL: https://github.com/llvm/llvm-project/commit/0984843d7f376e12bfd75fe5e8aae302c8abb6d7
DIFF: https://github.com/llvm/llvm-project/commit/0984843d7f376e12bfd75fe5e8aae302c8abb6d7.diff

LOG: [NFC][hwasan] Return to one loop in CopyShadow

Looks simpler.

Added: 
    

Modified: 
    compiler-rt/lib/hwasan/hwasan_report.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/hwasan/hwasan_report.cpp b/compiler-rt/lib/hwasan/hwasan_report.cpp
index d499f973288936b..0590e231448c04d 100644
--- a/compiler-rt/lib/hwasan/hwasan_report.cpp
+++ b/compiler-rt/lib/hwasan/hwasan_report.cpp
@@ -525,22 +525,19 @@ BaseReport::Shadow BaseReport::CopyShadow() const {
 
   result.addr = GetPrintTagStart(untagged_addr + mismatch_offset);
   uptr tag_addr = result.addr;
-  for (tag_t &tag_copy : result.tags) {
-    if (MemIsShadow(tag_addr))
-      tag_copy = *reinterpret_cast<tag_t *>(tag_addr);
-    ++tag_addr;
-  }
-
-  uptr short_tags_addr = result.addr + kShortDumpOffset;
-  for (tag_t &tag_copy : result.short_tags) {
-    tag_t tag = GetTagCopy(short_tags_addr);
-    uptr granule_addr = ShadowToMem(short_tags_addr);
-    if (1 <= tag && tag <= kShadowAlignment &&
+  uptr short_end = kShortDumpOffset + ARRAY_SIZE(shadow.short_tags);
+  for (uptr i = 0; i < ARRAY_SIZE(result.tags); ++i, ++tag_addr) {
+    if (!MemIsShadow(tag_addr))
+      continue;
+    result.tags[i] = *reinterpret_cast<tag_t *>(tag_addr);
+    if (i < kShortDumpOffset || i >= short_end)
+      continue;
+    uptr granule_addr = ShadowToMem(tag_addr);
+    if (1 <= result.tags[i] && result.tags[i] <= kShadowAlignment &&
         IsAccessibleMemoryRange(granule_addr, kShadowAlignment)) {
-      tag_copy =
+      result.short_tags[i - kShortDumpOffset] =
           *reinterpret_cast<tag_t *>(granule_addr + kShadowAlignment - 1);
     }
-    ++short_tags_addr;
   }
   return result;
 }


        


More information about the llvm-commits mailing list