[PATCH] D24004: [ThinLTO] Indirect call promotion fixes for promoted local functions

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 29 15:48:11 PDT 2016

tejohnson added inline comments.

Comment at: lib/Transforms/IPO/PassManagerBuilder.cpp:376
@@ -375,2 +375,3 @@
     legacy::PassManagerBase &MPM) {
   // Allow forcing function attributes as a debugging and tuning aid.
mehdi_amini wrote:
> Spurious empty line?
Will remove

Comment at: lib/Transforms/IPO/PassManagerBuilder.cpp:412
@@ +411,3 @@
+  // are removed.
+  if (PerformThinLTO)
+    MPM.add(createPGOIndirectCallPromotionLegacyPass(/*InLTO = */ true));
davidxl wrote:
> tejohnson wrote:
> > davidxl wrote:
> > > Is there PGOInstr/Annotation pass before this?
> > In the compile step. PerformThinLTO is true when we are in the ThinLTO backends. See also further down where we guard the invocation of addPGOInstrPasses with !PerformThinLTO.
> Ok. Can you add a comment here documenting this: with thinLTO, there are two icall promotion pass. One is in the compile phase where PerformThinLTO is false to handle intra-module calls, the other one is here that does cross module ones?
Will do.

Comment at: lib/Transforms/IPO/PassManagerBuilder.cpp:440
@@ -430,1 +439,3 @@
+    // for imported functions.
+    MPM.add(createPGOIndirectCallPromotionLegacyPass());
mehdi_amini wrote:
> Do we want to do this in the compile phase?
Yes, we want to have one in the compile phase to catch intra-module indirect calls (that will subsequently be eligible for inlining during the compile phase).


More information about the llvm-commits mailing list