llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-compiler-rt-sanitizer Author: Vitaly Buka (vitalybuka) <details> <summary>Changes</summary> Replace AddedLocationAddr and nullptr placeholders in ReportDesc::locs with Vector<uptr> loc_addrs, and append symbolized data locations in ScopedReport::SymbolizeStackElems() without needing a compaction pass. Assisted-by: Gemini --- Full diff: https://github.com/llvm/llvm-project/pull/228825.diff 2 Files Affected: - (modified) compiler-rt/lib/tsan/rtl/tsan_report.h (+1-6) - (modified) compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp (+6-21) ``````````diff diff --git a/compiler-rt/lib/tsan/rtl/tsan_report.h b/compiler-rt/lib/tsan/rtl/tsan_report.h index 13171aa270684..6c881fe82ed00 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_report.h +++ b/compiler-rt/lib/tsan/rtl/tsan_report.h @@ -106,11 +106,6 @@ struct ReportMutex { ReportStack* stack = nullptr; }; -struct AddedLocationAddr { - uptr addr = 0; - usize locs_idx = 0; -}; - struct AddedStack { StackTrace stack_trace; bool suppressable = false; @@ -124,7 +119,7 @@ class ReportDesc { Vector<AddedStack> added_stacks; Vector<ReportMop*> mops; Vector<ReportLocation*> locs; - Vector<AddedLocationAddr> added_location_addrs; + Vector<uptr> loc_addrs; Vector<ReportMutex*> mutexes; Vector<ReportThread*> threads; Vector<Tid> unique_tids; diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp b/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp index ebdc7695c43da..b6390bfd1f564 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp +++ b/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp @@ -215,30 +215,16 @@ void ScopedReport::SymbolizeStackElems() { } // symbolize locations - for (usize i = 0, size = rep_->locs.Size(); i < size; i++) { - // added locations have a NULL placeholder - don't dereference them - if (ReportLocation *loc = rep_->locs[i]) - loc->stack = SymbolizeStackId(loc->stack_id); - } + for (usize i = 0, size = rep_->locs.Size(); i < size; i++) + rep_->locs[i]->stack = SymbolizeStackId(rep_->locs[i]->stack_id); // symbolize any added locations - for (usize i = 0, size = rep_->added_location_addrs.Size(); i < size; i++) { - AddedLocationAddr *added_loc = &rep_->added_location_addrs[i]; - if (ReportLocation *loc = SymbolizeData(added_loc->addr)) { + for (usize i = 0, size = rep_->loc_addrs.Size(); i < size; i++) { + if (ReportLocation* loc = SymbolizeData(rep_->loc_addrs[i])) { loc->suppressable = true; - rep_->locs[added_loc->locs_idx] = loc; - } - } - - // Filter out any added location placeholders that could not be symbolized - usize j = 0; - for (usize i = 0, size = rep_->locs.Size(); i < size; i++) { - if (rep_->locs[i] != nullptr) { - rep_->locs[j] = rep_->locs[i]; - j++; + rep_->locs.PushBack(loc); } } - rep_->locs.Resize(j); // symbolize threads for (usize i = 0, size = rep_->threads.Size(); i < size; i++) { @@ -386,8 +372,7 @@ void ScopedReport::AddLocation(uptr addr, uptr size) { } } #endif - rep_->added_location_addrs.PushBack({addr, rep_->locs.Size()}); - rep_->locs.PushBack(nullptr); + rep_->loc_addrs.PushBack(addr); } #if !SANITIZER_GO `````````` </details> https://github.com/llvm/llvm-project/pull/228825 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
