> On Jul 3, 2018, at 7:19 PM, Jeff Law <l...@redhat.com> wrote: > > On 07/03/2018 12:28 PM, Qing Zhao wrote: >> >>>> >>>>> >>>>> In order to collect complete information on all the inlining >>>>> transformation that GCC applies on a given program, >>>>> I searched online, and found that the option -fopt-info-inline might be >>>>> the right option to use: >>>>> >>>>> in which, it mentioned: >>>>> >>>>> "As another example, >>>>> gcc -O3 -fopt-info-inline-optimized-missed=inline.txt >>>>> outputs information about missed optimizations as well as optimized >>>>> locations from all the inlining passes into inline.txt. >>>>> >>>>> “ >>>>> >>>>> Then I checked a very small testcase with GCC9 as following: >>>>> >>>>> [qinzhao@localhost inline_report]$ cat inline_1.c >>>>> static int foo (int a) >>>>> { >>>>> return a + 10; >>>>> } >>>>> >>>>> static int bar (int b) >>>>> { >>>>> return b - 20; >>>>> } >>>>> >>>>> static int boo (int a, int b) >>>>> { >>>>> return foo (a) + bar (b); >>>>> } >>>>> >>>>> extern int v_a, v_b; >>>>> extern int result; >>>>> >>>>> int compute () >>>>> { >>>>> result = boo (v_a, v_b); >>>>> return result; >>>>> } >>>>> >>>>> [qinzhao@localhost inline_report]$ /home/qinzhao/Install/latest/bin/gcc >>>>> -O3 -fopt-info-inline-optimized-missed=inline.txt inline_1.c -S >>>>> [qinzhao@localhost inline_report]$ ls -l inline.txt >>>>> -rw-rw-r--. 1 qinzhao qinzhao 0 Jul 3 11:25 inline.txt >>>>> [qinzhao@localhost inline_report]$ cat inline_1.s >>>>> .file "inline_1.c" >>>>> .text >>>>> .p2align 4,,15 >>>>> .globl compute >>>>> .type compute, @function >>>>> compute: >>>>> .LFB3: >>>>> .cfi_startproc >>>>> movl v_a(%rip), %edx >>>>> movl v_b(%rip), %eax >>>>> leal -10(%rdx,%rax), %eax >>>>> movl %eax, result(%rip) >>>>> ret >>>>> .cfi_endproc >>>>> .LFE3: >>>>> .size compute, .-compute >>>>> .ident "GCC: (GNU) 9.0.0 20180702 (experimental)" >>>>> .section .note.GNU-stack,"",@progbits >>>>> >>>>> From the above, we can see: >>>>> 1. the call chains to —>“boo”->”foo”, “bar” in the routine “compute” >>>>> are completely inlined into “compute”; >>>>> 2. However, there is NO any inline information is dumped into >>>>> “inline.txt”. >>>>> >>>>> >>>>> So, My questions are: >>>>> >>>>> 1. Is the option -fopt-info-inline the right option to use to get the >>>>> complete inlining transformation info from GCC? >>>>> 2. is this a bug that the current -fopt-info-inline cannot dump >>>>> anything for this testing case? >>>> >>>> I think the early inliner doesn't use opt-info yet. >>> >>> so, shall we add the opt-info support to early inliner? >> >> I just created the following PR to record this work: >> >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86395 >> <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86395> >> let me know if I missed anything. > I'm hoping that the work David is doing WRT optimization information > will be usable for the inliner as well.
where can I find more details of David’s work? > In fact, inlining and > vectorization are the two use cases we identified internally as the > first targets. actually, during my study, I noticed that vectorization, some loop transformation, and OMP are all generating information for -fopt-info (might not be complete yet, though). But inliner is generating Nothing for -fopt-info. Qing > > > jeff