diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2013-03-27 17:59:57 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2013-03-27 17:59:57 +0000 |
commit | f754eb501d6bd163fff6747716b7703fe45be4b8 (patch) | |
tree | e353ee2a85838341ade347e64e04870e467a4344 /lib/tsan/rtl/tsan_rtl_report.cc | |
parent | 5d834a85bb239abf962995290e6fd71115ecb38c (diff) | |
download | compiler-rt-f754eb501d6bd163fff6747716b7703fe45be4b8.tar.gz compiler-rt-f754eb501d6bd163fff6747716b7703fe45be4b8.tar.bz2 compiler-rt-f754eb501d6bd163fff6747716b7703fe45be4b8.tar.xz |
tsan: print matched suppressions if print_suppressions=1 flag is provided
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@178159 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_rtl_report.cc')
-rw-r--r-- | lib/tsan/rtl/tsan_rtl_report.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/tsan/rtl/tsan_rtl_report.cc b/lib/tsan/rtl/tsan_rtl_report.cc index fd61f4a4..e7109f6e 100644 --- a/lib/tsan/rtl/tsan_rtl_report.cc +++ b/lib/tsan/rtl/tsan_rtl_report.cc @@ -501,12 +501,13 @@ bool OutputReport(Context *ctx, const ReportStack *suppress_stack2) { atomic_store(&ctx->last_symbolize_time_ns, NanoTime(), memory_order_relaxed); const ReportDesc *rep = srep.GetReport(); - uptr suppress_pc = IsSuppressed(rep->typ, suppress_stack1); + Suppression *supp = 0; + uptr suppress_pc = IsSuppressed(rep->typ, suppress_stack1, &supp); if (suppress_pc == 0) - suppress_pc = IsSuppressed(rep->typ, suppress_stack2); + suppress_pc = IsSuppressed(rep->typ, suppress_stack2, &supp); if (suppress_pc != 0) { - FiredSuppression supp = {srep.GetReport()->typ, suppress_pc}; - ctx->fired_suppressions.PushBack(supp); + FiredSuppression s = {srep.GetReport()->typ, suppress_pc, supp}; + ctx->fired_suppressions.PushBack(s); } if (OnReport(rep, suppress_pc != 0)) return false; @@ -522,8 +523,12 @@ bool IsFiredSuppression(Context *ctx, if (ctx->fired_suppressions[k].type != srep.GetReport()->typ) continue; for (uptr j = 0; j < trace.Size(); j++) { - if (trace.Get(j) == ctx->fired_suppressions[k].pc) + FiredSuppression *s = &ctx->fired_suppressions[k]; + if (trace.Get(j) == s->pc) { + if (s->supp) + s->supp->hit_count++; return true; + } } } return false; @@ -560,7 +565,7 @@ static bool IsJavaNonsense(const ReportDesc *rep) { || (frame->func == 0 && frame->file == 0 && frame->line == 0 && frame->module == 0)) { if (frame) { - FiredSuppression supp = {rep->typ, frame->pc}; + FiredSuppression supp = {rep->typ, frame->pc, 0}; CTX()->fired_suppressions.PushBack(supp); } return true; |