i386: Update document for inlining rules

gcc/ChangeLog:

	* doc/extend.texi: Move x86 inlining rule to a new subsubsection
	and add description for inling of function with arch and tune
	attributes.
This commit is contained in:
Hongyu Wang 2023-07-06 14:22:52 +08:00
parent 9f4f833455
commit 6ded65b8e6

View file

@ -7243,11 +7243,6 @@ Prefer 256-bit vector width for instructions.
Prefer 512-bit vector width for instructions.
@end table
On the x86, the inliner does not inline a
function that has different target options than the caller, unless the
callee has a subset of the target options of the caller. For example
a function declared with @code{target("sse3")} can inline a function
with @code{target("sse2")}, since @code{-msse3} implies @code{-msse2}.
@end table
@cindex @code{indirect_branch} function attribute, x86
@ -7361,6 +7356,20 @@ counterpart to option @option{-mno-direct-extern-access}.
@end table
@subsubsection Inlining rules
On the x86, the inliner does not inline a
function that has different target options than the caller, unless the
callee has a subset of the target options of the caller. For example
a function declared with @code{target("sse3")} can inline a function
with @code{target("sse2")}, since @code{-msse3} implies @code{-msse2}.
Besides the basic rule, when a function specifies
@code{target("arch=@var{ARCH}")} or @code{target("tune=@var{TUNE}")}
attribute, the inlining rule will be different. It allows inlining of
a function with default @option{-march=x86-64} and
@option{-mtune=generic} specified, or a function that has a subset
of ISA features and marked with always_inline.
@node Xstormy16 Function Attributes
@subsection Xstormy16 Function Attributes