[PATCH] [Core] Update references in parallel
Sean Silva
chisophugis at gmail.com
Tue Mar 17 13:58:37 PDT 2015
REPOSITORY
rL LLVM
================
Comment at: lib/Core/Resolver.cpp:355
@@ -353,3 +354,3 @@
if (_symbolTable.isCoalescedAway(atom))
_deadAtoms.insert(ref->target());
continue;
----------------
davide wrote:
> ruiu wrote:
> > I think this change is not thread-safe because of this line. _deadAtoms.insert is not thread-safe.
> Oh this is really a bummer, considering it's such an hot codepath :(
> Do you think it makes sense to surround insert with a lock and measure again and/or do you have a proposal for an alternative?
Another solution would be to accumulate a separate vector in each thread, then merge them at the end. The `const_cast<Reference *>(ref)->setTarget(newTarget);` also needs some scrutiny. I would suggest testing these parallelism changes with threadsanitizer.
http://reviews.llvm.org/D8372
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
More information about the llvm-commits
mailing list