[llvm-branch-commits] [NFC][TSan] Remove nullptr location placeholders in ScopedReport (PR #228825)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sat Oct 3 22:22:31 PDT 2026
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
More information about the llvm-branch-commits
mailing list