On Thu, May 14, 2020 at 04:20:42PM +0200, Marco Elver wrote: > On Thu, 14 May 2020 at 16:13, Peter Zijlstra <[email protected]> wrote: > > > > On Wed, May 13, 2020 at 03:58:30PM +0200, Marco Elver wrote: > > > On Wed, 13 May 2020 at 15:24, Peter Zijlstra <[email protected]> wrote: > > > > > > Also, could not this compiler instrumentation live as a kernel specific > > > > GCC-plugin instead of being part of GCC proper? Because in that case, > > > > we'd have much better control over it. > > > > > > I'd like it if we could make it a GCC-plugin for GCC, but how? I don't > > > see a way to affect TSAN instrumentation. FWIW Clang already has > > > distinguish-volatile support (unreleased Clang 11). > > > > Ah, I figured not use the built-in TSAN at all, do a complete > > replacement of the instrumentation with a plugin. AFAIU plugins are able > > to emit instrumentation, but this isn't something I know a lot about. > > Interesting option. But it will likely not solve the no_sanitize and > inlining problem, because those are deeply tied to the optimization > pipelines.
So I'm imagining adding the instrumentation is done at a very late pass, after all, all we want is to add instrumentation to any memops. I imagine this is done right before doing register allocation and emitting asm. At this point we can look if the current function has a no_sanitize attribute, no? That is, this is done after all the optimization and inlining stages anyway; why would we care about that? Maybe I'm too naive of compiler internals; this really isn't my area :-)

