diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-06-16 21:03:53 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-06-16 21:03:53 +0000 |
commit | 4658ff5fee0369e08fe69bce90019fad154d9330 (patch) | |
tree | 5ac9da286baff9e296c083f060fc58b2e53b63bf /lib/tsan | |
parent | 7edd24de96f22ad70fd3ca16a3c51723383cd58b (diff) | |
download | src-4658ff5fee0369e08fe69bce90019fad154d9330.tar.gz src-4658ff5fee0369e08fe69bce90019fad154d9330.zip |
Vendor import of compiler-rt trunk r305575:vendor/compiler-rt/compiler-rt-trunk-r305575
Notes
Notes:
svn path=/vendor/compiler-rt/dist/; revision=320017
svn path=/vendor/compiler-rt/compiler-rt-trunk-r305575/; revision=320018; tag=vendor/compiler-rt/compiler-rt-trunk-r305575
Diffstat (limited to 'lib/tsan')
-rw-r--r-- | lib/tsan/rtl/tsan_report.cc | 8 | ||||
-rw-r--r-- | lib/tsan/rtl/tsan_sync.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/tsan/rtl/tsan_report.cc b/lib/tsan/rtl/tsan_report.cc index 2de7ffc746fd..32cc3325fe40 100644 --- a/lib/tsan/rtl/tsan_report.cc +++ b/lib/tsan/rtl/tsan_report.cc @@ -92,7 +92,8 @@ static const char *ReportTypeString(ReportType typ, uptr tag) { if (typ == ReportTypeVptrUseAfterFree) return "heap-use-after-free (virtual call vs free)"; if (typ == ReportTypeExternalRace) { - return GetReportHeaderFromTag(tag) ?: "race on external object"; + const char *str = GetReportHeaderFromTag(tag); + return str ? str : "race on external object"; } if (typ == ReportTypeThreadLeak) return "thread leak"; @@ -170,8 +171,9 @@ static void PrintMop(const ReportMop *mop, bool first) { MopDesc(first, mop->write, mop->atomic), mop->size, (void *)mop->addr, thread_name(thrbuf, mop->tid)); } else { - const char *object_type = - GetObjectTypeFromTag(mop->external_tag) ?: "external object"; + const char *object_type = GetObjectTypeFromTag(mop->external_tag); + if (object_type == nullptr) + object_type = "external object"; Printf(" %s access of %s at %p by %s", ExternalMopDesc(first, mop->write), object_type, (void *)mop->addr, thread_name(thrbuf, mop->tid)); diff --git a/lib/tsan/rtl/tsan_sync.h b/lib/tsan/rtl/tsan_sync.h index d24d69762171..b83c09ff784e 100644 --- a/lib/tsan/rtl/tsan_sync.h +++ b/lib/tsan/rtl/tsan_sync.h @@ -83,7 +83,7 @@ struct SyncVar { } bool IsFlagSet(u32 f) const { - return atomic_load_relaxed(&flags); + return atomic_load_relaxed(&flags) & f; } void SetFlags(u32 f) { |