For example, we have profile as below, and compiler decide function a only inline function b. Now llvm won’t use the profile information about c and d. Finally, there is three function:a(inline b), c, d.
a:xx:xx
1: b:xx
1: c:xx
1: d:xx
In my opinion, when some profile don’t be used, the profile information should split and merge. When function a inline fuction b and stop use following profile information, the profile information should split as below. Finally, there is tow function:a(inline b),c(inline d).
c:xx:xx
1: d:xx
Should we reuse profile when llvm try inlinie failed?