Hi, 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:
https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html <https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html> 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? Thanks a lot for your help. Qing