diff options
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 11 | ||||
-rw-r--r-- | gcc/doc/passes.texi | 19 |
2 files changed, 29 insertions, 1 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c790e2f..580232a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -575,7 +575,7 @@ Objective-C and Objective-C++ Dialects}. -fipa-bit-cp -fipa-vrp -fipa-pta -fipa-profile -fipa-pure-const -fipa-reference -fipa-reference-addressable -fipa-stack-alignment -fipa-icf -fira-algorithm=@var{algorithm} --flive-patching=@var{level} +-flate-combine-instructions -flive-patching=@var{level} -fira-region=@var{region} -fira-hoist-pressure -fira-loop-pressure -fno-ira-share-save-slots -fno-ira-share-spill-slots @@ -13675,6 +13675,15 @@ equivalences that are found only by GCC and equivalences found only by Gold. This flag is enabled by default at @option{-O2} and @option{-Os}. +@opindex flate-combine-instructions +@item -flate-combine-instructions +Enable two instruction combination passes that run relatively late in the +compilation process. One of the passes runs before register allocation and +the other after register allocation. The main aim of the passes is to +substitute definitions into all uses. + +Most targets enable this flag by default at @option{-O2} and @option{-Os}. + @opindex flive-patching @item -flive-patching=@var{level} Control GCC's optimizations to produce output suitable for live-patching. diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi index 5746d3e..4ac7a23 100644 --- a/gcc/doc/passes.texi +++ b/gcc/doc/passes.texi @@ -991,6 +991,25 @@ RTL expressions for the instructions by substitution, simplifies the result using algebra, and then attempts to match the result against the machine description. The code is located in @file{combine.cc}. +@item Late instruction combination + +This pass attempts to do further instruction combination, on top of +that performed by @file{combine.cc}. Its current purpose is to +substitute definitions into all uses simultaneously, so that the +definition can be removed. This differs from the forward propagation +pass, whose purpose is instead to simplify individual uses on the +assumption that the definition will remain. It differs from +@file{combine.cc} in that there is no hard-coded limit on the number +of instructions that can be combined at once. It also differs from +@file{combine.cc} in that it can move instructions, where necessary. + +However, the pass is not in principle limited to this form of +combination. It is intended to be a home for other, future +combination approaches as well. + +The pass runs twice, once before register allocation and once after +register allocation. The code is located in @file{late-combine.cc}. + @item Mode switching optimization This pass looks for instructions that require the processor to be in a |