done, r153353.<div>Thanks! </div><div><br></div><div>--kcc <br><br><div class="gmail_quote">On Fri, Mar 23, 2012 at 2:51 PM, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
On Mar 23, 2012, at 2:11 PM, Kostya Serebryany wrote:<br>
<br>
> Hello,<br>
><br>
> Please review the following patch that adds extension point "EP_OptimizerLast" to PassManagerBuilder.<br>
><br>
> Currently, ThreadSanitizer instrumentation pass (which is a FunctionPass, not a ModulePass) runs as EP_ScalarOptimizerLate.<br>
> As the result it instruments functions before inlining, which is wrong.<br>
> Once this patch is in, I'll change ThreadSanitizer to run at EP_OptimizerLast, so that it kicks in after inlining (really last).<br>
<br>
</div>This looks fine to me,<br>
<br>
-Chris<br>
<div><div class="h5"><br>
<br>
><br>
> An alternative to this change would be to make ThreadSanitizer a ModulePass (kind of sad).<br>
><br>
> Thanks,<br>
><br>
> --kcc<br>
><br>
> Index: lib/Transforms/IPO/PassManagerBuilder.cpp<br>
> ===================================================================<br>
> --- lib/Transforms/IPO/PassManagerBuilder.cpp   (revision 153188)<br>
> +++ lib/Transforms/IPO/PassManagerBuilder.cpp   (working copy)<br>
> @@ -202,6 +202,7 @@<br>
>      if (OptLevel > 1)<br>
>        MPM.add(createConstantMergePass());     // Merge dup global constants<br>
>    }<br>
> +  addExtensionsToPM(EP_OptimizerLast, MPM);<br>
>  }<br>
><br>
>  void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM,<br>
> Index: include/llvm/Transforms/IPO/PassManagerBuilder.h<br>
> ===================================================================<br>
> --- include/llvm/Transforms/IPO/PassManagerBuilder.h    (revision 153188)<br>
> +++ include/llvm/Transforms/IPO/PassManagerBuilder.h    (working copy)<br>
> @@ -73,6 +73,10 @@<br>
>      /// cleanup-ish optimizations.<br>
>      EP_ScalarOptimizerLate,<br>
><br>
> +    /// EP_OptimizerLast -- This extension point allows adding passes that<br>
> +    /// run after everything else.<br>
> +    EP_OptimizerLast,<br>
> +<br>
>      /// EP_EnabledOnOptLevel0 - This extension point allows adding passes that<br>
>      /// should not be disabled by O0 optimization level. The passes will be<br>
>      /// inserted after the inlining pass.<br>
><br>
><br>
</div></div>> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
</blockquote></div><br></div>