aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHongyu Wang <hongyu.wang@intel.com>2023-07-06 14:22:52 +0800
committerHongyu Wang <hongyu.wang@intel.com>2023-07-06 16:32:57 +0800
commit6ded65b8e6c55a9280e381775a64b2c282df6207 (patch)
tree1211f57a5d9bda255635a8f8b11006eb4fc6e50f
parent9f4f833455bb35c11d03e93f802604ac7cd8b740 (diff)
downloadgcc-6ded65b8e6c55a9280e381775a64b2c282df6207.zip
gcc-6ded65b8e6c55a9280e381775a64b2c282df6207.tar.gz
gcc-6ded65b8e6c55a9280e381775a64b2c282df6207.tar.bz2
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.
-rw-r--r--gcc/doc/extend.texi19
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index d1b018e..d701b4d 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -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