[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