<div dir="ltr">Fixed.<div><br></div><div>David</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 17, 2016 at 2:01 PM, Justin Bogner <span dir="ltr"><<a href="mailto:mail@justinbogner.com" target="_blank">mail@justinbogner.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Xinliang David Li via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> writes:<br>
> Author: davidxl<br>
> Date: Mon May 16 11:31:07 2016<br>
> New Revision: 269660<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=269660&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=269660&view=rev</a><br>
> Log:<br>
> [PM] Port indirect call promotion pass to new pass manager<br>
><br>
> Modified:<br>
>     llvm/trunk/include/llvm/Transforms/PGOInstrumentation.h<br>
>     llvm/trunk/lib/Passes/PassRegistry.def<br>
>     llvm/trunk/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp<br>
>     llvm/trunk/test/Transforms/PGOProfile/icp_covariant_call_return.ll<br>
>     llvm/trunk/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll<br>
>     llvm/trunk/test/Transforms/PGOProfile/icp_invoke.ll<br>
>     llvm/trunk/test/Transforms/PGOProfile/icp_mismatch_msg.ll<br>
>     llvm/trunk/test/Transforms/PGOProfile/icp_vararg.ll<br>
>     llvm/trunk/test/Transforms/PGOProfile/indirect_call_promotion.ll<br>
><br>
> Modified: llvm/trunk/include/llvm/Transforms/PGOInstrumentation.h<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/PGOInstrumentation.h?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/PGOInstrumentation.h?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/include/llvm/Transforms/PGOInstrumentation.h (original)<br>
> +++ llvm/trunk/include/llvm/Transforms/PGOInstrumentation.h Mon May 16 11:31:07 2016<br>
> @@ -35,5 +35,15 @@ private:<br>
>    std::string ProfileFileName;<br>
>  };<br>
><br>
> +/// The indirect function call promotion pass.<br>
> +class PGOIndirectCallPromotion : public PassInfoMixin<PGOIndirectCallPromotion> {<br>
> +public:<br>
> +  PGOIndirectCallPromotion() : InLTO(false) {}<br>
> +  PreservedAnalyses run(Module &M, AnalysisManager<Module> &AM);<br>
> +  void setInLTO() { InLTO = true; }<br>
<br>
Why a separate setter, rather than making this a parameter to the<br>
constructor?<br>
<br>
> +private:<br>
> +  bool InLTO;<br>
> +};<br>
> +<br>
>  } // End llvm namespace<br>
>  #endif<br>
><br>
> Modified: llvm/trunk/lib/Passes/PassRegistry.def<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassRegistry.def?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassRegistry.def?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Passes/PassRegistry.def (original)<br>
> +++ llvm/trunk/lib/Passes/PassRegistry.def Mon May 16 11:31:07 2016<br>
> @@ -47,6 +47,7 @@ MODULE_PASS("instrprof", InstrProfiling(<br>
>  MODULE_PASS("invalidate<all>", InvalidateAllAnalysesPass())<br>
>  MODULE_PASS("ipsccp", IPSCCPPass())<br>
>  MODULE_PASS("no-op-module", NoOpModulePass())<br>
> +MODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion())<br>
>  MODULE_PASS("pgo-instr-gen", PGOInstrumentationGen())<br>
>  MODULE_PASS("pgo-instr-use", PGOInstrumentationUse())<br>
>  MODULE_PASS("print", PrintModulePass(dbgs()))<br>
><br>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp Mon May 16 11:31:07 2016<br>
> @@ -31,6 +31,7 @@<br>
>  #include "llvm/ProfileData/InstrProfReader.h"<br>
>  #include "llvm/Support/Debug.h"<br>
>  #include "llvm/Transforms/Instrumentation.h"<br>
> +#include "llvm/Transforms/PGOInstrumentation.h"<br>
>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"<br>
>  #include <string><br>
>  #include <utility><br>
> @@ -693,3 +694,11 @@ bool PGOIndirectCallPromotionLegacyPass:<br>
>    InLTO |= ICPLTOMode;<br>
>    return promoteIndirectCalls(M, InLTO);<br>
>  }<br>
> +<br>
> +PreservedAnalyses PGOIndirectCallPromotion::run(Module &M, AnalysisManager<Module> &AM) {<br>
> +  InLTO |= ICPLTOMode;<br>
<br>
I guess this is also how the legacy version works, but it seems really<br>
strange to change the member variable based on the cl::opt. Wouldn't it<br>
be more normal to just call the function with `InLTO || ICPLTOMode`<br>
below?<br>
<br>
> +  if (!promoteIndirectCalls(M, InLTO))<br>
> +    return PreservedAnalyses::all();<br>
> +<br>
> +  return PreservedAnalyses::none();<br>
> +}<br>
><br>
> Modified: llvm/trunk/test/Transforms/PGOProfile/icp_covariant_call_return.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_covariant_call_return.ll?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_covariant_call_return.ll?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/PGOProfile/icp_covariant_call_return.ll (original)<br>
> +++ llvm/trunk/test/Transforms/PGOProfile/icp_covariant_call_return.ll Mon May 16 11:31:07 2016<br>
> @@ -1,4 +1,5 @@<br>
>  ; RUN: opt < %s -pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
> +; RUN: opt < %s -passes=pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
>  target triple = "x86_64-unknown-linux-gnu"<br>
><br>
><br>
> Modified: llvm/trunk/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll (original)<br>
> +++ llvm/trunk/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll Mon May 16 11:31:07 2016<br>
> @@ -1,4 +1,5 @@<br>
>  ; RUN: opt < %s -pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
> +; RUN: opt < %s -passes=pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
>  target triple = "x86_64-unknown-linux-gnu"<br>
>  %struct.D = type { %struct.B }<br>
><br>
> Modified: llvm/trunk/test/Transforms/PGOProfile/icp_invoke.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_invoke.ll?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_invoke.ll?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/PGOProfile/icp_invoke.ll (original)<br>
> +++ llvm/trunk/test/Transforms/PGOProfile/icp_invoke.ll Mon May 16 11:31:07 2016<br>
> @@ -1,4 +1,5 @@<br>
>  ; RUN: opt < %s -icp-lto -pgo-icall-prom -S -icp-count-threshold=0 | FileCheck %s --check-prefix=ICP<br>
> +; RUN: opt < %s -icp-lto -passes=pgo-icall-prom -S -icp-count-threshold=0 | FileCheck %s --check-prefix=ICP<br>
>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
>  target triple = "x86_64-unknown-linux-gnu"<br>
><br>
><br>
> Modified: llvm/trunk/test/Transforms/PGOProfile/icp_mismatch_msg.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_mismatch_msg.ll?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_mismatch_msg.ll?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/PGOProfile/icp_mismatch_msg.ll (original)<br>
> +++ llvm/trunk/test/Transforms/PGOProfile/icp_mismatch_msg.ll Mon May 16 11:31:07 2016<br>
> @@ -1,4 +1,5 @@<br>
>  ; RUN: opt < %s -pgo-icall-prom -pass-remarks-missed=PGOIndirectCallPromotion -S 2>& 1 | FileCheck %s<br>
> +; RUN: opt < %s -passes=pgo-icall-prom -pass-remarks-missed=PGOIndirectCallPromotion -S 2>& 1 | FileCheck %s<br>
><br>
>  ; CHECK: remark: <unknown>:0:0: Cannot promote indirect call to func4 with count of 1234: The number of arguments mismatch<br>
>  ; CHECK: remark: <unknown>:0:0: Cannot promote indirect call to 11517462787082255043 with count of 2345: Cannot find the target<br>
><br>
> Modified: llvm/trunk/test/Transforms/PGOProfile/icp_vararg.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_vararg.ll?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/icp_vararg.ll?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/PGOProfile/icp_vararg.ll (original)<br>
> +++ llvm/trunk/test/Transforms/PGOProfile/icp_vararg.ll Mon May 16 11:31:07 2016<br>
> @@ -1,4 +1,5 @@<br>
>  ; RUN: opt < %s -pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
> +; RUN: opt < %s -passes=pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
>  target triple = "x86_64-unknown-linux-gnu"<br>
><br>
><br>
> Modified: llvm/trunk/test/Transforms/PGOProfile/indirect_call_promotion.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/indirect_call_promotion.ll?rev=269660&r1=269659&r2=269660&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/indirect_call_promotion.ll?rev=269660&r1=269659&r2=269660&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/PGOProfile/indirect_call_promotion.ll (original)<br>
> +++ llvm/trunk/test/Transforms/PGOProfile/indirect_call_promotion.ll Mon May 16 11:31:07 2016<br>
> @@ -1,5 +1,7 @@<br>
>  ; RUN: opt < %s -pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
> +; RUN: opt < %s -passes=pgo-icall-prom -S | FileCheck %s --check-prefix=ICALL-PROM<br>
>  ; RUN: opt < %s -pgo-icall-prom -S -pass-remarks=PGOIndirectCallPromotion -icp-count-threshold=0 -icp-percent-threshold=0 -icp-max-prom=4 2>&1 | FileCheck %s --check-prefix=PASS-REMARK<br>
> +; RUN: opt < %s -passes=pgo-icall-prom -S -pass-remarks=PGOIndirectCallPromotion -icp-count-threshold=0 -icp-percent-threshold=0 -icp-max-prom=4 2>&1 | FileCheck %s --check-prefix=PASS-REMARK<br>
>  ; PASS-REMARK: remark: <unknown>:0:0: Promote indirect call to func4 with count 1030 out of 1600<br>
>  ; PASS-REMARK: remark: <unknown>:0:0: Promote indirect call to func2 with count 410 out of 570<br>
>  ; PASS-REMARK: remark: <unknown>:0:0: Promote indirect call to func3 with count 150 out of 160<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>