On Tue, Oct 15, 2024 at 6:33 AM Rong Xu <xur@xxxxxxxxxx> wrote: > > Enable the machine function split optimization for AutoFDO in Clang. > > Machine function split (MFS) is a pass in the Clang compiler that > splits a function into hot and cold parts. The linker groups all > cold blocks across functions together. This decreases hot code > fragmentation and improves iCache and iTLB utilization. > > MFS requires a profile so this is enabled only for the AutoFDO builds. > > Co-developed-by: Han Shen <shenhan@xxxxxxxxxx> > Signed-off-by: Han Shen <shenhan@xxxxxxxxxx> > Signed-off-by: Rong Xu <xur@xxxxxxxxxx> > Suggested-by: Sriraman Tallam <tmsriram@xxxxxxxxxx> > Suggested-by: Krzysztof Pszeniczny <kpszeniczny@xxxxxxxxxx> > --- > include/asm-generic/vmlinux.lds.h | 6 ++++++ > scripts/Makefile.autofdo | 2 ++ > 2 files changed, 8 insertions(+) > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > index ace617d1af9b..20e46c0917db 100644 > --- a/include/asm-generic/vmlinux.lds.h > +++ b/include/asm-generic/vmlinux.lds.h > @@ -565,9 +565,14 @@ defined(CONFIG_AUTOFDO_CLANG) > __unlikely_text_start = .; \ > *(.text.unlikely .text.unlikely.*) \ > __unlikely_text_end = .; > +#define TEXT_SPLIT \ > + __split_text_start = .; \ > + *(.text.split .text.split.[0-9a-zA-Z_]*) \ > + __split_text_end = .; > #else > #define TEXT_HOT *(.text.hot .text.hot.*) > #define TEXT_UNLIKELY *(.text.unlikely .text.unlikely.*) > +#define TEXT_SPLIT > #endif Why conditional? Where are __unlikely_text_start and __unlikely_text_end used? -- Best Regards Masahiro Yamada