On Mon, Apr 28, 2025 at 4:10 PM Martin Jambor <mjam...@suse.cz> wrote: > > Hi, > > I have noticed that the option -fdump-ipa-clones is not documented > although there are users who depend on it. This patch adds the > missing documentation along with the description of the information it > dumps and the format it uses. > > I am never quite sure which of the texinfo mark-ups is the most > appropriate in which situation, I'll of course incorporate any > feedback on this as well as the general wording of the text. > > After we settle on a version, I'd like to backport the documentation > also at least to GCC 15, 14 and 13. > > I have tested this patch with make info, make pdf and make html and > manually inspecting the output. Is it perhaps OK for master and the > branches or what would better be changed?
OK for trunk and branches. Richard. > Thanks, > > Martin > > gcc/ChangeLog: > > 2025-04-23 Martin Jambor <mjam...@suse.cz> > > * doc/invoke.texi (Developer Options): Document -fdump-ipa-clones. > --- > gcc/doc/invoke.texi | 87 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 87 insertions(+) > > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index 020442aa032..79528136734 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -20737,6 +20737,93 @@ By default, the dump will contain messages about > successful > optimizations (equivalent to @option{-optimized}) together with > low-level details about the analysis. > > +@opindex fdump-ipa-clones > +@item -fdump-ipa-clones > + > +Create a dump file containing information about creation of call graph > +node clones and removals of call graph nodes during inter-procedural > +optimizations and transformations. Its main intended use is that tools > +that create live-patches can determine the set of functions that need to > +be live-patched to completely replace a particular function (see > +@option{-flive-patching}). The file name is generated by appending > +suffix @code{ipa-clones} to the source file name, and the file is > +created in the same directory as the output file. Each entry in the > +file is on a separate line containing semicolon separated fields. > + > +In the case of call graph clone creation, the individual fields are: > + > +@enumerate > +@item > +String @code{Callgraph clone}. > + > +@item > +Name of the function being cloned as it is presented to the assembler. > + > +@item > +A number that uniquely represents the function being cloned in the call > +graph. Note that the number is unique only within a compilation unit or > +within whole-program analysis but is likely to be different in the two > +phases. > + > +@item > +The file name of the source file where the function is defined. > + > +@item > +The line on which the function definition is located. > + > +@item > +The column where the function definition is located. > + > +@item > +Name of the new function clone as it is presented to the assembler. > + > +@item > +A number that uniquely represents the new function clone in the call > +graph. Note that the number is unique only within a compilation unit or > +within whole-program analysis but is likely to be different in the two > +phases. > + > +@item > +The file name of the source file where the source code location of the > +new clone points to. > + > +@item > +The line to which the source code location of the new clone points to. > + > +@item > +The column to which the source code location of the new clone points to. > + > +@item > +A string that determines the reason for cloning. > + > +@end enumerate > + > +In the case of call graph clone removal, the individual fields are: > + > +@enumerate > +@item > +String @code{Callgraph removal}. > + > +@item > +Name of the function being removed as it would be presented to the assembler. > + > +@item > +A number that uniquely represents the function being cloned in the call > +graph. Note that the number is unique only within a compilation unit or > +within whole-program analysis but is likely to be different in the two > +phases. > + > +@item > +The file name of the source file where the function is defined. > + > +@item > +The line on which the function definition is located. > + > +@item > +The column where the function definition is located. > + > +@end enumerate > + > @opindex fdump-lang > @item -fdump-lang > Dump language-specific information. The file name is made by appending > -- > 2.49.0 >