Six years ago, Michael Matz proposed a patch for generating profile instrumentation in a thread-safe manner:
http://gcc.gnu.org/ml/gcc-patches/2007-03/msg00950.html Reading through the thread, I saw a few minor objections, but nothing to indicate the patch should be withdrawn. However, apparently the changes were never made. I'm curious about the history here. What was the reason for abandoning this? Was a better alternative found? Were all the counters made thread-local? My reason for asking involves a large heavily-threaded application that is improved by feedback-directed optimization on some platforms, but not on others. One theory is that a defective profile is generated due to counter dropouts from contention. I'm somewhat skeptical about this given that some platforms seem to do well with it, but it's possible. I'm hopeful that knowing why the thread-safe profiling patch wasn't implemented will give us more of a clue. Thanks for any help! Bill