https://gcc.gnu.org/g:63e7478db76452d9f7d5bef9704a94480cc28a77
commit r15-8087-g63e7478db76452d9f7d5bef9704a94480cc28a77 Author: Michal Jires <mji...@suse.cz> Date: Thu Mar 13 16:18:10 2025 +0100 doc: document Incremental LTO flags This adds missing documentation for LTO flags. gcc/ChangeLog: * doc/invoke.texi: (Optimize Options): Add incremental LTO flags. Diff: --- gcc/doc/invoke.texi | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 768b98dba74c..26b3dd939617 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -601,7 +601,8 @@ Objective-C and Objective-C++ Dialects}. -floop-block -floop-interchange -floop-strip-mine -floop-unroll-and-jam -floop-nest-optimize -floop-parallelize-all -flra-remat -flto -flto-compression-level --flto-partition=@var{alg} -fmalloc-dce -fmerge-all-constants +-flto-partition=@var{alg} -flto-incremental=@var{path} +-flto-incremental-cache-size=@var{n} -fmalloc-dce -fmerge-all-constants -fmerge-constants -fmodulo-sched -fmodulo-sched-allow-regmoves -fmove-loop-invariants -fmove-loop-stores -fno-branch-count-reg -fno-defer-pop -fno-fp-int-builtin-inexact -fno-function-cse @@ -15053,8 +15054,10 @@ Specify the partitioning algorithm used by the link-time optimizer. The value is either @samp{1to1} to specify a partitioning mirroring the original source files or @samp{balanced} to specify partitioning into equally sized chunks (whenever possible) or @samp{max} to create -new partition for every symbol where possible. Specifying @samp{none} -as an algorithm disables partitioning and streaming completely. +new partition for every symbol where possible or @samp{cache} to +balance chunk sizes while keeping related symbols together for better +caching in incremental LTO. Specifying @samp{none} as an algorithm +disables partitioning and streaming completely. The default value is @samp{balanced}. While @samp{1to1} can be used as an workaround for various code ordering issues, the @samp{max} partitioning is intended for internal testing only. @@ -15062,6 +15065,23 @@ The value @samp{one} specifies that exactly one partition should be used while the value @samp{none} bypasses partitioning and executes the link-time optimization step directly from the WPA phase. +@opindex flto-incremental +@item -flto-incremental=@var{path} +Enable incremental LTO, with its cache in given existing directory. +Can significantly shorten edit-compile cycles with LTO. + +When used with LTO (@option{-flto}), the output of translation units +inside LTO is cached. Cached translation units are likely to be +encountered again when recompiling with small code changes, leading to +recompile time reduction. + +Multiple GCC instances can use the same cache in parallel. + +@opindex flto-incremental-cache-size +@item -flto-incremental-cache-size=@var{n} +Specifies number of cache entries in incremental LTO after which to prune +old entries. This is a soft limit, temporarily there may be more entries. + @opindex flto-compression-level @item -flto-compression-level=@var{n} This option specifies the level of compression used for intermediate