Index: projects/clang700-import/usr.bin/clang/bugpoint/bugpoint.1 =================================================================== --- projects/clang700-import/usr.bin/clang/bugpoint/bugpoint.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/bugpoint/bugpoint.1 (revision 337162) @@ -1,309 +1,309 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "BUGPOINT" "1" "2017-12-24" "6" "LLVM" +.TH "BUGPOINT" "1" "2018-08-02" "7" "LLVM" .SH NAME bugpoint \- automatic test case reduction tool . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBbugpoint\fP [\fIoptions\fP] [\fIinput LLVM ll/bc files\fP] [\fILLVM passes\fP] \fB\-\-args\fP \fIprogram arguments\fP .SH DESCRIPTION .sp \fBbugpoint\fP narrows down the source of problems in LLVM tools and passes. It can be used to debug three types of failures: optimizer crashes, miscompilations by optimizers, or bad native code generation (including problems in the static and JIT compilers). It aims to reduce large test cases to small, useful ones. For more information on the design and inner workings of \fBbugpoint\fP, as well as advice for using bugpoint, see /Bugpoint in the LLVM distribution. .SH OPTIONS .sp \fB\-\-additional\-so\fP \fIlibrary\fP .INDENT 0.0 .INDENT 3.5 Load the dynamic shared object \fIlibrary\fP into the test program whenever it is run. This is useful if you are debugging programs which depend on non\-LLVM libraries (such as the X or curses libraries) to run. .UNINDENT .UNINDENT .sp \fB\-\-append\-exit\-code\fP=\fI{true,false}\fP .INDENT 0.0 .INDENT 3.5 Append the test programs exit code to the output file so that a change in exit code is considered a test failure. Defaults to false. .UNINDENT .UNINDENT .sp \fB\-\-args\fP \fIprogram args\fP .INDENT 0.0 .INDENT 3.5 Pass all arguments specified after \fB\-\-args\fP to the test program whenever it runs. Note that if any of the \fIprogram args\fP start with a "\fB\-\fP", you should use: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C bugpoint [bugpoint args] \-\-args \-\- [program args] .ft P .fi .UNINDENT .UNINDENT .sp The "\fB\-\-\fP" right after the \fB\-\-args\fP option tells \fBbugpoint\fP to consider any options starting with "\fB\-\fP" to be part of the \fB\-\-args\fP option, not as options to \fBbugpoint\fP itself. .UNINDENT .UNINDENT .sp \fB\-\-tool\-args\fP \fItool args\fP .INDENT 0.0 .INDENT 3.5 Pass all arguments specified after \fB\-\-tool\-args\fP to the LLVM tool under test (\fBllc\fP, \fBlli\fP, etc.) whenever it runs. You should use this option in the following way: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C bugpoint [bugpoint args] \-\-tool\-args \-\- [tool args] .ft P .fi .UNINDENT .UNINDENT .sp The "\fB\-\-\fP" right after the \fB\-\-tool\-args\fP option tells \fBbugpoint\fP to consider any options starting with "\fB\-\fP" to be part of the \fB\-\-tool\-args\fP option, not as options to \fBbugpoint\fP itself. (See \fB\-\-args\fP, above.) .UNINDENT .UNINDENT .sp \fB\-\-safe\-tool\-args\fP \fItool args\fP .INDENT 0.0 .INDENT 3.5 Pass all arguments specified after \fB\-\-safe\-tool\-args\fP to the "safe" execution tool. .UNINDENT .UNINDENT .sp \fB\-\-gcc\-tool\-args\fP \fIgcc tool args\fP .INDENT 0.0 .INDENT 3.5 Pass all arguments specified after \fB\-\-gcc\-tool\-args\fP to the invocation of \fBgcc\fP\&. .UNINDENT .UNINDENT .sp \fB\-\-opt\-args\fP \fIopt args\fP .INDENT 0.0 .INDENT 3.5 Pass all arguments specified after \fB\-\-opt\-args\fP to the invocation of \fBopt\fP\&. .UNINDENT .UNINDENT .sp \fB\-\-disable\-{dce,simplifycfg}\fP .INDENT 0.0 .INDENT 3.5 Do not run the specified passes to clean up and reduce the size of the test program. By default, \fBbugpoint\fP uses these passes internally when attempting to reduce test programs. If you\(aqre trying to find a bug in one of these passes, \fBbugpoint\fP may crash. .UNINDENT .UNINDENT .sp \fB\-\-enable\-valgrind\fP .INDENT 0.0 .INDENT 3.5 Use valgrind to find faults in the optimization phase. This will allow bugpoint to find otherwise asymptomatic problems caused by memory mis\-management. .UNINDENT .UNINDENT .sp \fB\-find\-bugs\fP .INDENT 0.0 .INDENT 3.5 Continually randomize the specified passes and run them on the test program until a bug is found or the user kills \fBbugpoint\fP\&. .UNINDENT .UNINDENT .sp \fB\-help\fP .INDENT 0.0 .INDENT 3.5 Print a summary of command line options. .UNINDENT .UNINDENT .sp \fB\-\-input\fP \fIfilename\fP .INDENT 0.0 .INDENT 3.5 Open \fIfilename\fP and redirect the standard input of the test program, whenever it runs, to come from that file. .UNINDENT .UNINDENT .sp \fB\-\-load\fP \fIplugin\fP .INDENT 0.0 .INDENT 3.5 Load the dynamic object \fIplugin\fP into \fBbugpoint\fP itself. This object should register new optimization passes. Once loaded, the object will add new command line options to enable various optimizations. To see the new complete list of optimizations, use the \fB\-help\fP and \fB\-\-load\fP options together; for example: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C bugpoint \-\-load myNewPass.so \-help .ft P .fi .UNINDENT .UNINDENT .UNINDENT .UNINDENT .sp \fB\-\-mlimit\fP \fImegabytes\fP .INDENT 0.0 .INDENT 3.5 Specifies an upper limit on memory usage of the optimization and codegen. Set to zero to disable the limit. .UNINDENT .UNINDENT .sp \fB\-\-output\fP \fIfilename\fP .INDENT 0.0 .INDENT 3.5 Whenever the test program produces output on its standard output stream, it should match the contents of \fIfilename\fP (the "reference output"). If you do not use this option, \fBbugpoint\fP will attempt to generate a reference output by compiling the program with the "safe" backend and running it. .UNINDENT .UNINDENT .sp \fB\-\-run\-{int,jit,llc,custom}\fP .INDENT 0.0 .INDENT 3.5 Whenever the test program is compiled, \fBbugpoint\fP should generate code for it using the specified code generator. These options allow you to choose the interpreter, the JIT compiler, the static native code compiler, or a custom command (see \fB\-\-exec\-command\fP) respectively. .UNINDENT .UNINDENT .sp \fB\-\-safe\-{llc,custom}\fP .INDENT 0.0 .INDENT 3.5 When debugging a code generator, \fBbugpoint\fP should use the specified code generator as the "safe" code generator. This is a known\-good code generator used to generate the "reference output" if it has not been provided, and to compile portions of the program that as they are excluded from the testcase. These options allow you to choose the static native code compiler, or a custom command, (see \fB\-\-exec\-command\fP) respectively. The interpreter and the JIT backends cannot currently be used as the "safe" backends. .UNINDENT .UNINDENT .sp \fB\-\-exec\-command\fP \fIcommand\fP .INDENT 0.0 .INDENT 3.5 This option defines the command to use with the \fB\-\-run\-custom\fP and \fB\-\-safe\-custom\fP options to execute the bitcode testcase. This can be useful for cross\-compilation. .UNINDENT .UNINDENT .sp \fB\-\-compile\-command\fP \fIcommand\fP .INDENT 0.0 .INDENT 3.5 This option defines the command to use with the \fB\-\-compile\-custom\fP option to compile the bitcode testcase. The command should exit with a failure exit code if the file is "interesting" and should exit with a success exit code (i.e. 0) otherwise (this is the same as if it crashed on "interesting" inputs). .sp This can be useful for testing compiler output without running any link or execute stages. To generate a reduced unit test, you may add CHECK directives to the testcase and pass the name of an executable compile\-command script in this form: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C #!/bin/sh llc "$@" not FileCheck [bugpoint input file].ll < bugpoint\-test\-program.s .ft P .fi .UNINDENT .UNINDENT .sp This script will "fail" as long as FileCheck passes. So the result will be the minimum bitcode that passes FileCheck. .UNINDENT .UNINDENT .sp \fB\-\-safe\-path\fP \fIpath\fP .INDENT 0.0 .INDENT 3.5 This option defines the path to the command to execute with the \fB\-\-safe\-{int,jit,llc,custom}\fP option. .UNINDENT .UNINDENT .sp \fB\-\-verbose\-errors\fP=\fI{true,false}\fP .INDENT 0.0 .INDENT 3.5 The default behavior of bugpoint is to print "" when it finds a reduced test that crashes compilation. This flag prints the output of the crashing program to stderr. This is useful to make sure it is the same error being tracked down and not a different error that happens to crash the compiler as well. Defaults to false. .UNINDENT .UNINDENT .SH EXIT STATUS .sp If \fBbugpoint\fP succeeds in finding a problem, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH SEE ALSO .sp opt|opt .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llc/llc.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llc/llc.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llc/llc.1 (revision 337162) @@ -1,274 +1,274 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLC" "1" "2017-12-24" "6" "LLVM" +.TH "LLC" "1" "2018-08-02" "7" "LLVM" .SH NAME llc \- LLVM static compiler . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllc\fP [\fIoptions\fP] [\fIfilename\fP] .SH DESCRIPTION .sp The \fBllc\fP command compiles LLVM source inputs into assembly language for a specified architecture. The assembly language output can then be passed through a native assembler and linker to generate a native executable. .sp The choice of architecture for the output assembly code is automatically determined from the input file, unless the \fB\-march\fP option is used to override the default. .SH OPTIONS .sp If \fBfilename\fP is "\fB\-\fP" or omitted, \fBllc\fP reads from standard input. Otherwise, it will from \fBfilename\fP\&. Inputs can be in either the LLVM assembly language format (\fB\&.ll\fP) or the LLVM bitcode format (\fB\&.bc\fP). .sp If the \fB\-o\fP option is omitted, then \fBllc\fP will send its output to standard output if the input is from standard input. If the \fB\-o\fP option specifies "\fB\-\fP", then the output will also be sent to standard output. .sp If no \fB\-o\fP option is specified and an input file other than "\fB\-\fP" is specified, then \fBllc\fP creates the output filename by taking the input filename, removing any existing \fB\&.bc\fP extension, and adding a \fB\&.s\fP suffix. .sp Other \fBllc\fP options are described below. .SS End\-user Options .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .INDENT 0.0 .TP .B \-O=uint Generate code at different optimization levels. These correspond to the \fB\-O0\fP, \fB\-O1\fP, \fB\-O2\fP, and \fB\-O3\fP optimization levels used by \fBclang\fP\&. .UNINDENT .INDENT 0.0 .TP .B \-mtriple= Override the target triple specified in the input file with the specified string. .UNINDENT .INDENT 0.0 .TP .B \-march= Specify the architecture for which to generate assembly, overriding the target encoded in the input file. See the output of \fBllc \-help\fP for a list of valid architectures. By default this is inferred from the target triple or autodetected to the current architecture. .UNINDENT .INDENT 0.0 .TP .B \-mcpu= Specify a specific chip in the current architecture to generate code for. By default this is inferred from the target triple and autodetected to the current architecture. For a list of available CPUs, use: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C llvm\-as < /dev/null | llc \-march=xyz \-mcpu=help .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-filetype= Specify what kind of output \fBllc\fP should generated. Options are: \fBasm\fP for textual assembly ( \fB\(aq.s\(aq\fP), \fBobj\fP for native object files (\fB\(aq.o\(aq\fP) and \fBnull\fP for not emitting anything (for performance testing). .sp Note that not all targets support all options. .UNINDENT .INDENT 0.0 .TP .B \-mattr=a1,+a2,\-a3,... Override or control specific attributes of the target, such as whether SIMD operations are enabled or not. The default set of attributes is set by the current CPU. For a list of available attributes, use: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C llvm\-as < /dev/null | llc \-march=xyz \-mattr=help .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-\-disable\-fp\-elim Disable frame pointer elimination optimization. .UNINDENT .INDENT 0.0 .TP .B \-\-disable\-excess\-fp\-precision Disable optimizations that may produce excess precision for floating point. Note that this option can dramatically slow down code on some systems (e.g. X86). .UNINDENT .INDENT 0.0 .TP .B \-\-enable\-no\-infs\-fp\-math Enable optimizations that assume no Inf values. .UNINDENT .INDENT 0.0 .TP .B \-\-enable\-no\-nans\-fp\-math Enable optimizations that assume no NAN values. .UNINDENT .INDENT 0.0 .TP .B \-\-enable\-unsafe\-fp\-math Enable optimizations that make unsafe assumptions about IEEE math (e.g. that addition is associative) or may not work for all input ranges. These optimizations allow the code generator to make use of some instructions which would otherwise not be usable (such as \fBfsin\fP on X86). .UNINDENT .INDENT 0.0 .TP .B \-\-stats Print statistics recorded by code\-generation passes. .UNINDENT .INDENT 0.0 .TP .B \-\-time\-passes Record the amount of time needed for each pass and print a report to standard error. .UNINDENT .INDENT 0.0 .TP .B \-\-load= Dynamically load \fBdso_path\fP (a path to a dynamically shared object) that implements an LLVM target. This will permit the target name to be used with the \fB\-march\fP option so that code can be generated for that target. .UNINDENT .INDENT 0.0 .TP .B \-meabi=[default|gnu|4|5] Specify which EABI version should conform to. Valid EABI versions are \fIgnu\fP, \fI4\fP and \fI5\fP\&. Default value (\fIdefault\fP) depends on the triple. .UNINDENT .INDENT 0.0 .TP .B \-stack\-size\-section Emit the .stack_sizes section which contains stack size metadata. The section -contains an array of pairs of function symbol references (8 byte) and stack +contains an array of pairs of function symbol values (pointer size) and stack sizes (unsigned LEB128). The stack size values only include the space allocated in the function prologue. Functions with dynamic stack allocations are not included. .UNINDENT .SS Tuning/Configuration Options .INDENT 0.0 .TP .B \-\-print\-machineinstrs Print generated machine code between compilation phases (useful for debugging). .UNINDENT .INDENT 0.0 .TP .B \-\-regalloc= Specify the register allocator to use. Valid register allocators are: .sp \fIbasic\fP .INDENT 7.0 .INDENT 3.5 Basic register allocator. .UNINDENT .UNINDENT .sp \fIfast\fP .INDENT 7.0 .INDENT 3.5 Fast register allocator. It is the default for unoptimized code. .UNINDENT .UNINDENT .sp \fIgreedy\fP .INDENT 7.0 .INDENT 3.5 Greedy register allocator. It is the default for optimized code. .UNINDENT .UNINDENT .sp \fIpbqp\fP .INDENT 7.0 .INDENT 3.5 Register allocator based on \(aqPartitioned Boolean Quadratic Programming\(aq. .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-\-spiller= Specify the spiller to use for register allocators that support it. Currently this option is used only by the linear scan register allocator. The default \fBspiller\fP is \fIlocal\fP\&. Valid spillers are: .sp \fIsimple\fP .INDENT 7.0 .INDENT 3.5 Simple spiller .UNINDENT .UNINDENT .sp \fIlocal\fP .INDENT 7.0 .INDENT 3.5 Local spiller .UNINDENT .UNINDENT .UNINDENT .SS Intel IA\-32\-specific Options .INDENT 0.0 .TP .B \-\-x86\-asm\-syntax=[att|intel] Specify whether to emit assembly code in AT&T syntax (the default) or Intel syntax. .UNINDENT .SH EXIT STATUS .sp If \fBllc\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH SEE ALSO .sp lli .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/lli/lli.1 =================================================================== --- projects/clang700-import/usr.bin/clang/lli/lli.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/lli/lli.1 (revision 337162) @@ -1,298 +1,298 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLI" "1" "2017-12-24" "6" "LLVM" +.TH "LLI" "1" "2018-08-02" "7" "LLVM" .SH NAME lli \- directly execute programs from LLVM bitcode . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBlli\fP [\fIoptions\fP] [\fIfilename\fP] [\fIprogram args\fP] .SH DESCRIPTION .sp \fBlli\fP directly executes programs in LLVM bitcode format. It takes a program in LLVM bitcode format and executes it using a just\-in\-time compiler or an interpreter. .sp \fBlli\fP is \fInot\fP an emulator. It will not execute IR of different architectures and it can only interpret (or JIT\-compile) for the host architecture. .sp The JIT compiler takes the same arguments as other tools, like \fBllc\fP, but they don\(aqt necessarily work for the interpreter. .sp If \fIfilename\fP is not specified, then \fBlli\fP reads the LLVM bitcode for the program from standard input. .sp The optional \fIargs\fP specified on the command line are passed to the program as arguments. .SH GENERAL OPTIONS .INDENT 0.0 .TP .B \-fake\-argv0=executable Override the \fBargv[0]\fP value passed into the executing program. .UNINDENT .INDENT 0.0 .TP .B \-force\-interpreter={false,true} If set to true, use the interpreter even if a just\-in\-time compiler is available for this architecture. Defaults to false. .UNINDENT .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .INDENT 0.0 .TP .B \-load=pluginfilename Causes \fBlli\fP to load the plugin (shared object) named \fIpluginfilename\fP and use it for optimization. .UNINDENT .INDENT 0.0 .TP .B \-stats Print statistics from the code\-generation passes. This is only meaningful for the just\-in\-time compiler, at present. .UNINDENT .INDENT 0.0 .TP .B \-time\-passes Record the amount of time needed for each code\-generation pass and print it to standard error. .UNINDENT .INDENT 0.0 .TP .B \-version Print out the version of \fBlli\fP and exit without doing anything else. .UNINDENT .SH TARGET OPTIONS .INDENT 0.0 .TP .B \-mtriple=target triple Override the target triple specified in the input bitcode file with the specified string. This may result in a crash if you pick an architecture which is not compatible with the current system. .UNINDENT .INDENT 0.0 .TP .B \-march=arch Specify the architecture for which to generate assembly, overriding the target encoded in the bitcode file. See the output of \fBllc \-help\fP for a list of valid architectures. By default this is inferred from the target triple or autodetected to the current architecture. .UNINDENT .INDENT 0.0 .TP .B \-mcpu=cpuname Specify a specific chip in the current architecture to generate code for. By default this is inferred from the target triple and autodetected to the current architecture. For a list of available CPUs, use: \fBllvm\-as < /dev/null | llc \-march=xyz \-mcpu=help\fP .UNINDENT .INDENT 0.0 .TP .B \-mattr=a1,+a2,\-a3,... Override or control specific attributes of the target, such as whether SIMD operations are enabled or not. The default set of attributes is set by the current CPU. For a list of available attributes, use: \fBllvm\-as < /dev/null | llc \-march=xyz \-mattr=help\fP .UNINDENT .SH FLOATING POINT OPTIONS .INDENT 0.0 .TP .B \-disable\-excess\-fp\-precision Disable optimizations that may increase floating point precision. .UNINDENT .INDENT 0.0 .TP .B \-enable\-no\-infs\-fp\-math Enable optimizations that assume no Inf values. .UNINDENT .INDENT 0.0 .TP .B \-enable\-no\-nans\-fp\-math Enable optimizations that assume no NAN values. .UNINDENT .INDENT 0.0 .TP .B \-enable\-unsafe\-fp\-math Causes \fBlli\fP to enable optimizations that may decrease floating point precision. .UNINDENT .INDENT 0.0 .TP .B \-soft\-float Causes \fBlli\fP to generate software floating point library calls instead of equivalent hardware instructions. .UNINDENT .SH CODE GENERATION OPTIONS .INDENT 0.0 .TP .B \-code\-model=model Choose the code model from: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C default: Target default code model small: Small code model kernel: Kernel code model medium: Medium code model large: Large code model .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-disable\-post\-RA\-scheduler Disable scheduling after register allocation. .UNINDENT .INDENT 0.0 .TP .B \-disable\-spill\-fusing Disable fusing of spill code into instructions. .UNINDENT .INDENT 0.0 .TP .B \-jit\-enable\-eh Exception handling should be enabled in the just\-in\-time compiler. .UNINDENT .INDENT 0.0 .TP .B \-join\-liveintervals Coalesce copies (default=true). .UNINDENT .INDENT 0.0 .TP .B \-nozero\-initialized\-in\-bss Don\(aqt place zero\-initialized symbols into the BSS section. .UNINDENT .INDENT 0.0 .TP .B \-pre\-RA\-sched=scheduler Instruction schedulers available (before register allocation): .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =default: Best scheduler for the target =none: No scheduling: breadth first sequencing =simple: Simple two pass scheduling: minimize critical path and maximize processor utilization =simple\-noitin: Simple two pass scheduling: Same as simple except using generic latency =list\-burr: Bottom\-up register reduction list scheduling =list\-tdrr: Top\-down register reduction list scheduling =list\-td: Top\-down list scheduler \-print\-machineinstrs \- Print generated machine code .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-regalloc=allocator Register allocator to use (default=linearscan) .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =bigblock: Big\-block register allocator =linearscan: linear scan register allocator =local \- local register allocator =simple: simple register allocator .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-relocation\-model=model Choose relocation model from: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =default: Target default relocation model =static: Non\-relocatable code =pic \- Fully relocatable, position independent code =dynamic\-no\-pic: Relocatable external references, non\-relocatable code .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-spiller Spiller to use (default=local) .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =simple: simple spiller =local: local spiller .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-x86\-asm\-syntax=syntax Choose style of code to emit from X86 backend: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =att: Emit AT&T\-style assembly =intel: Emit Intel\-style assembly .ft P .fi .UNINDENT .UNINDENT .UNINDENT .SH EXIT STATUS .sp If \fBlli\fP fails to load the program, it will exit with an exit code of 1. Otherwise, it will return the exit code of the program it executes. .SH SEE ALSO .sp \fBllc\fP .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-ar/llvm-ar.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-ar/llvm-ar.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-ar/llvm-ar.1 (revision 337162) @@ -1,390 +1,390 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-AR" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-AR" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-ar \- LLVM archiver . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-ar\fP [\-]{dmpqrtx}[Rabfikou] [relpos] [count] [files...] .SH DESCRIPTION .sp The \fBllvm\-ar\fP command is similar to the common Unix utility, \fBar\fP\&. It archives several files together into a single file. The intent for this is to produce archive libraries by LLVM bitcode that can be linked into an LLVM program. However, the archive can contain any kind of file. By default, \fBllvm\-ar\fP generates a symbol table that makes linking faster because only the symbol table needs to be consulted, not each individual file member of the archive. .sp The \fBllvm\-ar\fP command can be used to \fIread\fP SVR4, GNU and BSD style archive files. However, right now it can only write in the GNU format. If an SVR4 or BSD style archive is used with the \fBr\fP (replace) or \fBq\fP (quick update) operations, the archive will be reconstructed in GNU format. .sp Here\(aqs where \fBllvm\-ar\fP departs from previous \fBar\fP implementations: .sp \fISymbol Table\fP .INDENT 0.0 .INDENT 3.5 Since \fBllvm\-ar\fP supports bitcode files. The symbol table it creates is in GNU format and includes both native and bitcode files. .UNINDENT .UNINDENT .sp \fILong Paths\fP .INDENT 0.0 .INDENT 3.5 Currently \fBllvm\-ar\fP can read GNU and BSD long file names, but only writes archives with the GNU format. .UNINDENT .UNINDENT .SH OPTIONS .sp The options to \fBllvm\-ar\fP are compatible with other \fBar\fP implementations. However, there are a few modifiers (\fIR\fP) that are not found in other \fBar\fP implementations. The options to \fBllvm\-ar\fP specify a single basic operation to perform on the archive, a variety of modifiers for that operation, the name of the archive file, and an optional list of file names. These options are used to determine how \fBllvm\-ar\fP should process the archive file. .sp The Operations and Modifiers are explained in the sections below. The minimal set of options is at least one operator and the name of the archive. Typically archive files end with a \fB\&.a\fP suffix, but this is not required. Following the \fIarchive\-name\fP comes a list of \fIfiles\fP that indicate the specific members of the archive to operate on. If the \fIfiles\fP option is not specified, it generally means either "none" or "all" members, depending on the operation. .SS Operations .sp d .INDENT 0.0 .INDENT 3.5 Delete files from the archive. No modifiers are applicable to this operation. The \fIfiles\fP options specify which members should be removed from the archive. It is not an error if a specified file does not appear in the archive. If no \fIfiles\fP are specified, the archive is not modified. .UNINDENT .UNINDENT .sp m[abi] .INDENT 0.0 .INDENT 3.5 Move files from one location in the archive to another. The \fIa\fP, \fIb\fP, and \fIi\fP modifiers apply to this operation. The \fIfiles\fP will all be moved to the location given by the modifiers. If no modifiers are used, the files will be moved to the end of the archive. If no \fIfiles\fP are specified, the archive is not modified. .UNINDENT .UNINDENT .sp p .INDENT 0.0 .INDENT 3.5 Print files to the standard output. This operation simply prints the \fIfiles\fP indicated to the standard output. If no \fIfiles\fP are specified, the entire archive is printed. Printing bitcode files is ill\-advised as they might confuse your terminal settings. The \fIp\fP operation never modifies the archive. .UNINDENT .UNINDENT .sp q .INDENT 0.0 .INDENT 3.5 Quickly append files to the end of the archive. This operation quickly adds the \fIfiles\fP to the archive without checking for duplicates that should be removed first. If no \fIfiles\fP are specified, the archive is not modified. Because of the way that \fBllvm\-ar\fP constructs the archive file, its dubious whether the \fIq\fP operation is any faster than the \fIr\fP operation. .UNINDENT .UNINDENT .sp r[abu] .INDENT 0.0 .INDENT 3.5 Replace or insert file members. The \fIa\fP, \fIb\fP, and \fIu\fP modifiers apply to this operation. This operation will replace existing \fIfiles\fP or insert them at the end of the archive if they do not exist. If no \fIfiles\fP are specified, the archive is not modified. .UNINDENT .UNINDENT .sp t[v] .INDENT 0.0 .INDENT 3.5 Print the table of contents. Without any modifiers, this operation just prints the names of the members to the standard output. With the \fIv\fP modifier, \fBllvm\-ar\fP also prints out the file type (B=bitcode, S=symbol table, blank=regular file), the permission mode, the owner and group, the size, and the date. If any \fIfiles\fP are specified, the listing is only for those files. If no \fIfiles\fP are specified, the table of contents for the whole archive is printed. .UNINDENT .UNINDENT .sp x[oP] .INDENT 0.0 .INDENT 3.5 Extract archive members back to files. The \fIo\fP modifier applies to this operation. This operation retrieves the indicated \fIfiles\fP from the archive and writes them back to the operating system\(aqs file system. If no \fIfiles\fP are specified, the entire archive is extract. .UNINDENT .UNINDENT .SS Modifiers (operation specific) .sp The modifiers below are specific to certain operations. See the Operations section (above) to determine which modifiers are applicable to which operations. .sp [a] .INDENT 0.0 .INDENT 3.5 When inserting or moving member files, this option specifies the destination of the new files as being after the \fIrelpos\fP member. If \fIrelpos\fP is not found, the files are placed at the end of the archive. .UNINDENT .UNINDENT .sp [b] .INDENT 0.0 .INDENT 3.5 When inserting or moving member files, this option specifies the destination of the new files as being before the \fIrelpos\fP member. If \fIrelpos\fP is not found, the files are placed at the end of the archive. This modifier is identical to the \fIi\fP modifier. .UNINDENT .UNINDENT .sp [i] .INDENT 0.0 .INDENT 3.5 A synonym for the \fIb\fP option. .UNINDENT .UNINDENT .sp [o] .INDENT 0.0 .INDENT 3.5 When extracting files, this option will cause \fBllvm\-ar\fP to preserve the original modification times of the files it writes. .UNINDENT .UNINDENT .sp [u] .INDENT 0.0 .INDENT 3.5 When replacing existing files in the archive, only replace those files that have a time stamp than the time stamp of the member in the archive. .UNINDENT .UNINDENT .SS Modifiers (generic) .sp The modifiers below may be applied to any operation. .sp [c] .INDENT 0.0 .INDENT 3.5 For all operations, \fBllvm\-ar\fP will always create the archive if it doesn\(aqt exist. Normally, \fBllvm\-ar\fP will print a warning message indicating that the archive is being created. Using this modifier turns off that warning. .UNINDENT .UNINDENT .sp [s] .INDENT 0.0 .INDENT 3.5 This modifier requests that an archive index (or symbol table) be added to the archive. This is the default mode of operation. The symbol table will contain all the externally visible functions and global variables defined by all the bitcode files in the archive. .UNINDENT .UNINDENT .sp [S] .INDENT 0.0 .INDENT 3.5 This modifier is the opposite of the \fIs\fP modifier. It instructs \fBllvm\-ar\fP to not build the symbol table. If both \fIs\fP and \fIS\fP are used, the last modifier to occur in the options will prevail. .UNINDENT .UNINDENT .sp [v] .INDENT 0.0 .INDENT 3.5 This modifier instructs \fBllvm\-ar\fP to be verbose about what it is doing. Each editing operation taken against the archive will produce a line of output saying what is being done. .UNINDENT .UNINDENT .SH STANDARDS .sp The \fBllvm\-ar\fP utility is intended to provide a superset of the IEEE Std 1003.2 (POSIX.2) functionality for \fBar\fP\&. \fBllvm\-ar\fP can read both SVR4 and BSD4.4 (or Mac OS X) archives. If the \fBf\fP modifier is given to the \fBx\fP or \fBr\fP operations then \fBllvm\-ar\fP will write SVR4 compatible archives. Without this modifier, \fBllvm\-ar\fP will write BSD4.4 compatible archives that have long names immediately after the header and indicated using the "#1/ddd" notation for the name in the header. .SH FILE FORMAT .sp The file format for LLVM Archive files is similar to that of BSD 4.4 or Mac OSX archive files. In fact, except for the symbol table, the \fBar\fP commands on those operating systems should be able to read LLVM archive files. The details of the file format follow. .sp Each archive begins with the archive magic number which is the eight printable characters "!n" where n represents the newline character (0x0A). Following the magic number, the file is composed of even length members that begin with an archive header and end with a n padding character if necessary (to make the length even). Each file member is composed of a header (defined below), an optional newline\-terminated "long file name" and the contents of the file. .sp The fields of the header are described in the items below. All fields of the header contain only ASCII characters, are left justified and are right padded with space characters. .sp name \- char[16] .INDENT 0.0 .INDENT 3.5 This field of the header provides the name of the archive member. If the name is longer than 15 characters or contains a slash (/) character, then this field contains \fB#1/nnn\fP where \fBnnn\fP provides the length of the name and the \fB#1/\fP is literal. In this case, the actual name of the file is provided in the \fBnnn\fP bytes immediately following the header. If the name is 15 characters or less, it is contained directly in this field and terminated with a slash (/) character. .UNINDENT .UNINDENT .sp date \- char[12] .INDENT 0.0 .INDENT 3.5 This field provides the date of modification of the file in the form of a decimal encoded number that provides the number of seconds since the epoch (since 00:00:00 Jan 1, 1970) per Posix specifications. .UNINDENT .UNINDENT .sp uid \- char[6] .INDENT 0.0 .INDENT 3.5 This field provides the user id of the file encoded as a decimal ASCII string. This field might not make much sense on non\-Unix systems. On Unix, it is the same value as the st_uid field of the stat structure returned by the stat(2) operating system call. .UNINDENT .UNINDENT .sp gid \- char[6] .INDENT 0.0 .INDENT 3.5 This field provides the group id of the file encoded as a decimal ASCII string. This field might not make much sense on non\-Unix systems. On Unix, it is the same value as the st_gid field of the stat structure returned by the stat(2) operating system call. .UNINDENT .UNINDENT .sp mode \- char[8] .INDENT 0.0 .INDENT 3.5 This field provides the access mode of the file encoded as an octal ASCII string. This field might not make much sense on non\-Unix systems. On Unix, it is the same value as the st_mode field of the stat structure returned by the stat(2) operating system call. .UNINDENT .UNINDENT .sp size \- char[10] .INDENT 0.0 .INDENT 3.5 This field provides the size of the file, in bytes, encoded as a decimal ASCII string. .UNINDENT .UNINDENT .sp fmag \- char[2] .INDENT 0.0 .INDENT 3.5 This field is the archive file member magic number. Its content is always the two characters back tick (0x60) and newline (0x0A). This provides some measure utility in identifying archive files that have been corrupted. .UNINDENT .UNINDENT .sp offset \- vbr encoded 32\-bit integer .INDENT 0.0 .INDENT 3.5 The offset item provides the offset into the archive file where the bitcode member is stored that is associated with the symbol. The offset value is 0 based at the start of the first "normal" file member. To derive the actual file offset of the member, you must add the number of bytes occupied by the file signature (8 bytes) and the symbol tables. The value of this item is encoded using variable bit rate encoding to reduce the size of the symbol table. Variable bit rate encoding uses the high bit (0x80) of each byte to indicate if there are more bytes to follow. The remaining 7 bits in each byte carry bits from the value. The final byte does not have the high bit set. .UNINDENT .UNINDENT .sp length \- vbr encoded 32\-bit integer .INDENT 0.0 .INDENT 3.5 The length item provides the length of the symbol that follows. Like this \fIoffset\fP item, the length is variable bit rate encoded. .UNINDENT .UNINDENT .sp symbol \- character array .INDENT 0.0 .INDENT 3.5 The symbol item provides the text of the symbol that is associated with the \fIoffset\fP\&. The symbol is not terminated by any character. Its length is provided by the \fIlength\fP field. Note that is allowed (but unwise) to use non\-printing characters (even 0x00) in the symbol. This allows for multiple encodings of symbol names. .UNINDENT .UNINDENT .SH EXIT STATUS .sp If \fBllvm\-ar\fP succeeds, it will exit with 0. A usage error, results in an exit code of 1. A hard (file system typically) error results in an exit code of 2. Miscellaneous or unknown errors result in an exit code of 3. .SH SEE ALSO .sp ar(1) .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-as/llvm-as.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-as/llvm-as.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-as/llvm-as.1 (revision 337162) @@ -1,87 +1,87 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-AS" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-AS" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-as \- LLVM assembler . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-as\fP [\fIoptions\fP] [\fIfilename\fP] .SH DESCRIPTION .sp \fBllvm\-as\fP is the LLVM assembler. It reads a file containing human\-readable LLVM assembly language, translates it to LLVM bitcode, and writes the result into a file or to standard output. .sp If \fIfilename\fP is omitted or is \fB\-\fP, then \fBllvm\-as\fP reads its input from standard input. .sp If an output file is not specified with the \fB\-o\fP option, then \fBllvm\-as\fP sends its output to a file or standard output by following these rules: .INDENT 0.0 .IP \(bu 2 If the input is standard input, then the output is standard output. .IP \(bu 2 If the input is a file that ends with \fB\&.ll\fP, then the output file is of the same name, except that the suffix is changed to \fB\&.bc\fP\&. .IP \(bu 2 If the input is a file that does not end with the \fB\&.ll\fP suffix, then the output file has the same name as the input file, except that the \fB\&.bc\fP suffix is appended. .UNINDENT .SH OPTIONS .INDENT 0.0 .TP \fB\-f\fP Enable binary output on terminals. Normally, \fBllvm\-as\fP will refuse to write raw bitcode output if the output stream is a terminal. With this option, \fBllvm\-as\fP will write raw bitcode regardless of the output device. .TP \fB\-help\fP Print a summary of command line options. .TP \fB\-o\fP \fIfilename\fP Specify the output file name. If \fIfilename\fP is \fB\-\fP, then \fBllvm\-as\fP sends its output to standard output. .UNINDENT .SH EXIT STATUS .sp If \fBllvm\-as\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH SEE ALSO .sp llvm\-dis|llvm\-dis, gccas|gccas .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 (revision 337162) @@ -1,476 +1,476 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-BCANALYZER" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-BCANALYZER" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-bcanalyzer \- LLVM bitcode analyzer . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-bcanalyzer\fP [\fIoptions\fP] [\fIfilename\fP] .SH DESCRIPTION .sp The \fBllvm\-bcanalyzer\fP command is a small utility for analyzing bitcode files. The tool reads a bitcode file (such as generated with the \fBllvm\-as\fP tool) and produces a statistical report on the contents of the bitcode file. The tool can also dump a low level but human readable version of the bitcode file. This tool is probably not of much interest or utility except for those working directly with the bitcode file format. Most LLVM users can just ignore this tool. .sp If \fIfilename\fP is omitted or is \fB\-\fP, then \fBllvm\-bcanalyzer\fP reads its input from standard input. This is useful for combining the tool into a pipeline. Output is written to the standard output. .SH OPTIONS .INDENT 0.0 .TP .B \-nodetails Causes \fBllvm\-bcanalyzer\fP to abbreviate its output by writing out only a module level summary. The details for individual functions are not displayed. .UNINDENT .INDENT 0.0 .TP .B \-dump Causes \fBllvm\-bcanalyzer\fP to dump the bitcode in a human readable format. This format is significantly different from LLVM assembly and provides details about the encoding of the bitcode file. .UNINDENT .INDENT 0.0 .TP .B \-verify Causes \fBllvm\-bcanalyzer\fP to verify the module produced by reading the bitcode. This ensures that the statistics generated are based on a consistent module. .UNINDENT .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .SH EXIT STATUS .sp If \fBllvm\-bcanalyzer\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value, usually 1. .SH SUMMARY OUTPUT DEFINITIONS .sp The following items are always printed by llvm\-bcanalyzer. They comprize the summary output. .sp \fBBitcode Analysis Of Module\fP .INDENT 0.0 .INDENT 3.5 This just provides the name of the module for which bitcode analysis is being generated. .UNINDENT .UNINDENT .sp \fBBitcode Version Number\fP .INDENT 0.0 .INDENT 3.5 The bitcode version (not LLVM version) of the file read by the analyzer. .UNINDENT .UNINDENT .sp \fBFile Size\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of the entire bitcode file. .UNINDENT .UNINDENT .sp \fBModule Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of the module block. Percentage is relative to File Size. .UNINDENT .UNINDENT .sp \fBFunction Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of all the function blocks. Percentage is relative to File Size. .UNINDENT .UNINDENT .sp \fBGlobal Types Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of the Global Types Pool. Percentage is relative to File Size. This is the size of the definitions of all types in the bitcode file. .UNINDENT .UNINDENT .sp \fBConstant Pool Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of the Constant Pool Blocks Percentage is relative to File Size. .UNINDENT .UNINDENT .sp \fBModule Globals Bytes\fP .INDENT 0.0 .INDENT 3.5 Ths size, in bytes, of the Global Variable Definitions and their initializers. Percentage is relative to File Size. .UNINDENT .UNINDENT .sp \fBInstruction List Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of all the instruction lists in all the functions. Percentage is relative to File Size. Note that this value is also included in the Function Bytes. .UNINDENT .UNINDENT .sp \fBCompaction Table Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of all the compaction tables in all the functions. Percentage is relative to File Size. Note that this value is also included in the Function Bytes. .UNINDENT .UNINDENT .sp \fBSymbol Table Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of all the symbol tables in all the functions. Percentage is relative to File Size. Note that this value is also included in the Function Bytes. .UNINDENT .UNINDENT .sp \fBDependent Libraries Bytes\fP .INDENT 0.0 .INDENT 3.5 The size, in bytes, of the list of dependent libraries in the module. Percentage is relative to File Size. Note that this value is also included in the Module Global Bytes. .UNINDENT .UNINDENT .sp \fBNumber Of Bitcode Blocks\fP .INDENT 0.0 .INDENT 3.5 The total number of blocks of any kind in the bitcode file. .UNINDENT .UNINDENT .sp \fBNumber Of Functions\fP .INDENT 0.0 .INDENT 3.5 The total number of function definitions in the bitcode file. .UNINDENT .UNINDENT .sp \fBNumber Of Types\fP .INDENT 0.0 .INDENT 3.5 The total number of types defined in the Global Types Pool. .UNINDENT .UNINDENT .sp \fBNumber Of Constants\fP .INDENT 0.0 .INDENT 3.5 The total number of constants (of any type) defined in the Constant Pool. .UNINDENT .UNINDENT .sp \fBNumber Of Basic Blocks\fP .INDENT 0.0 .INDENT 3.5 The total number of basic blocks defined in all functions in the bitcode file. .UNINDENT .UNINDENT .sp \fBNumber Of Instructions\fP .INDENT 0.0 .INDENT 3.5 The total number of instructions defined in all functions in the bitcode file. .UNINDENT .UNINDENT .sp \fBNumber Of Long Instructions\fP .INDENT 0.0 .INDENT 3.5 The total number of long instructions defined in all functions in the bitcode file. Long instructions are those taking greater than 4 bytes. Typically long instructions are GetElementPtr with several indices, PHI nodes, and calls to functions with large numbers of arguments. .UNINDENT .UNINDENT .sp \fBNumber Of Operands\fP .INDENT 0.0 .INDENT 3.5 The total number of operands used in all instructions in the bitcode file. .UNINDENT .UNINDENT .sp \fBNumber Of Compaction Tables\fP .INDENT 0.0 .INDENT 3.5 The total number of compaction tables in all functions in the bitcode file. .UNINDENT .UNINDENT .sp \fBNumber Of Symbol Tables\fP .INDENT 0.0 .INDENT 3.5 The total number of symbol tables in all functions in the bitcode file. .UNINDENT .UNINDENT .sp \fBNumber Of Dependent Libs\fP .INDENT 0.0 .INDENT 3.5 The total number of dependent libraries found in the bitcode file. .UNINDENT .UNINDENT .sp \fBTotal Instruction Size\fP .INDENT 0.0 .INDENT 3.5 The total size of the instructions in all functions in the bitcode file. .UNINDENT .UNINDENT .sp \fBAverage Instruction Size\fP .INDENT 0.0 .INDENT 3.5 The average number of bytes per instruction across all functions in the bitcode file. This value is computed by dividing Total Instruction Size by Number Of Instructions. .UNINDENT .UNINDENT .sp \fBMaximum Type Slot Number\fP .INDENT 0.0 .INDENT 3.5 The maximum value used for a type\(aqs slot number. Larger slot number values take more bytes to encode. .UNINDENT .UNINDENT .sp \fBMaximum Value Slot Number\fP .INDENT 0.0 .INDENT 3.5 The maximum value used for a value\(aqs slot number. Larger slot number values take more bytes to encode. .UNINDENT .UNINDENT .sp \fBBytes Per Value\fP .INDENT 0.0 .INDENT 3.5 The average size of a Value definition (of any type). This is computed by dividing File Size by the total number of values of any type. .UNINDENT .UNINDENT .sp \fBBytes Per Global\fP .INDENT 0.0 .INDENT 3.5 The average size of a global definition (constants and global variables). .UNINDENT .UNINDENT .sp \fBBytes Per Function\fP .INDENT 0.0 .INDENT 3.5 The average number of bytes per function definition. This is computed by dividing Function Bytes by Number Of Functions. .UNINDENT .UNINDENT .sp \fB# of VBR 32\-bit Integers\fP .INDENT 0.0 .INDENT 3.5 The total number of 32\-bit integers encoded using the Variable Bit Rate encoding scheme. .UNINDENT .UNINDENT .sp \fB# of VBR 64\-bit Integers\fP .INDENT 0.0 .INDENT 3.5 The total number of 64\-bit integers encoded using the Variable Bit Rate encoding scheme. .UNINDENT .UNINDENT .sp \fB# of VBR Compressed Bytes\fP .INDENT 0.0 .INDENT 3.5 The total number of bytes consumed by the 32\-bit and 64\-bit integers that use the Variable Bit Rate encoding scheme. .UNINDENT .UNINDENT .sp \fB# of VBR Expanded Bytes\fP .INDENT 0.0 .INDENT 3.5 The total number of bytes that would have been consumed by the 32\-bit and 64\-bit integers had they not been compressed with the Variable Bit Rage encoding scheme. .UNINDENT .UNINDENT .sp \fBBytes Saved With VBR\fP .INDENT 0.0 .INDENT 3.5 The total number of bytes saved by using the Variable Bit Rate encoding scheme. The percentage is relative to # of VBR Expanded Bytes. .UNINDENT .UNINDENT .SH DETAILED OUTPUT DEFINITIONS .sp The following definitions occur only if the \-nodetails option was not given. The detailed output provides additional information on a per\-function basis. .sp \fBType\fP .INDENT 0.0 .INDENT 3.5 The type signature of the function. .UNINDENT .UNINDENT .sp \fBByte Size\fP .INDENT 0.0 .INDENT 3.5 The total number of bytes in the function\(aqs block. .UNINDENT .UNINDENT .sp \fBBasic Blocks\fP .INDENT 0.0 .INDENT 3.5 The number of basic blocks defined by the function. .UNINDENT .UNINDENT .sp \fBInstructions\fP .INDENT 0.0 .INDENT 3.5 The number of instructions defined by the function. .UNINDENT .UNINDENT .sp \fBLong Instructions\fP .INDENT 0.0 .INDENT 3.5 The number of instructions using the long instruction format in the function. .UNINDENT .UNINDENT .sp \fBOperands\fP .INDENT 0.0 .INDENT 3.5 The number of operands used by all instructions in the function. .UNINDENT .UNINDENT .sp \fBInstruction Size\fP .INDENT 0.0 .INDENT 3.5 The number of bytes consumed by instructions in the function. .UNINDENT .UNINDENT .sp \fBAverage Instruction Size\fP .INDENT 0.0 .INDENT 3.5 The average number of bytes consumed by the instructions in the function. This value is computed by dividing Instruction Size by Instructions. .UNINDENT .UNINDENT .sp \fBBytes Per Instruction\fP .INDENT 0.0 .INDENT 3.5 The average number of bytes used by the function per instruction. This value is computed by dividing Byte Size by Instructions. Note that this is not the same as Average Instruction Size. It computes a number relative to the total function size not just the size of the instruction list. .UNINDENT .UNINDENT .sp \fBNumber of VBR 32\-bit Integers\fP .INDENT 0.0 .INDENT 3.5 The total number of 32\-bit integers found in this function (for any use). .UNINDENT .UNINDENT .sp \fBNumber of VBR 64\-bit Integers\fP .INDENT 0.0 .INDENT 3.5 The total number of 64\-bit integers found in this function (for any use). .UNINDENT .UNINDENT .sp \fBNumber of VBR Compressed Bytes\fP .INDENT 0.0 .INDENT 3.5 The total number of bytes in this function consumed by the 32\-bit and 64\-bit integers that use the Variable Bit Rate encoding scheme. .UNINDENT .UNINDENT .sp \fBNumber of VBR Expanded Bytes\fP .INDENT 0.0 .INDENT 3.5 The total number of bytes in this function that would have been consumed by the 32\-bit and 64\-bit integers had they not been compressed with the Variable Bit Rate encoding scheme. .UNINDENT .UNINDENT .sp \fBBytes Saved With VBR\fP .INDENT 0.0 .INDENT 3.5 The total number of bytes saved in this function by using the Variable Bit Rate encoding scheme. The percentage is relative to # of VBR Expanded Bytes. .UNINDENT .UNINDENT .SH SEE ALSO .sp /CommandGuide/llvm\-dis, /BitCodeFormat .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-cov/llvm-cov.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-cov/llvm-cov.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-cov/llvm-cov.1 (revision 337162) @@ -1,413 +1,429 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-COV" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-COV" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-cov \- emit coverage information . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-cov\fP \fIcommand\fP [\fIargs...\fP] .SH DESCRIPTION .sp The \fBllvm\-cov\fP tool shows code coverage information for programs that are instrumented to emit profile data. It can be used to work with \fBgcov\fP\-style coverage or with \fBclang\fP\(aqs instrumentation based profiling. .sp If the program is invoked with a base name of \fBgcov\fP, it will behave as if the \fBllvm\-cov gcov\fP command were called. Otherwise, a command should be provided. .SH COMMANDS .INDENT 0.0 .IP \(bu 2 \fI\%gcov\fP .IP \(bu 2 \fI\%show\fP .IP \(bu 2 \fI\%report\fP .IP \(bu 2 \fI\%export\fP .UNINDENT .SH GCOV COMMAND .SS SYNOPSIS .sp \fBllvm\-cov gcov\fP [\fIoptions\fP] \fISOURCEFILE\fP .SS DESCRIPTION .sp The \fBllvm\-cov gcov\fP tool reads code coverage data files and displays the coverage information for a specified source file. It is compatible with the \fBgcov\fP tool from version 4.2 of \fBGCC\fP and may also be compatible with some later versions of \fBgcov\fP\&. .sp To use \fBllvm\-cov gcov\fP, you must first build an instrumented version of your application that collects coverage data as it runs. Compile with the \fB\-fprofile\-arcs\fP and \fB\-ftest\-coverage\fP options to add the instrumentation. (Alternatively, you can use the \fB\-\-coverage\fP option, which includes both of those other options.) You should compile with debugging information (\fB\-g\fP) and without optimization (\fB\-O0\fP); otherwise, the coverage data cannot be accurately mapped back to the source code. .sp At the time you compile the instrumented code, a \fB\&.gcno\fP data file will be generated for each object file. These \fB\&.gcno\fP files contain half of the coverage data. The other half of the data comes from \fB\&.gcda\fP files that are generated when you run the instrumented program, with a separate \fB\&.gcda\fP file for each object file. Each time you run the program, the execution counts are summed into any existing \fB\&.gcda\fP files, so be sure to remove any old files if you do not want their contents to be included. .sp By default, the \fB\&.gcda\fP files are written into the same directory as the object files, but you can override that by setting the \fBGCOV_PREFIX\fP and \fBGCOV_PREFIX_STRIP\fP environment variables. The \fBGCOV_PREFIX_STRIP\fP variable specifies a number of directory components to be removed from the start of the absolute path to the object file directory. After stripping those directories, the prefix from the \fBGCOV_PREFIX\fP variable is added. These environment variables allow you to run the instrumented program on a machine where the original object file directories are not accessible, but you will then need to copy the \fB\&.gcda\fP files back to the object file directories where \fBllvm\-cov gcov\fP expects to find them. .sp Once you have generated the coverage data files, run \fBllvm\-cov gcov\fP for each main source file where you want to examine the coverage results. This should be run from the same directory where you previously ran the compiler. The results for the specified source file are written to a file named by appending a \fB\&.gcov\fP suffix. A separate output file is also created for each file included by the main source file, also with a \fB\&.gcov\fP suffix added. .sp The basic content of an \fB\&.gcov\fP output file is a copy of the source file with an execution count and line number prepended to every line. The execution count is shown as \fB\-\fP if a line does not contain any executable code. If a line contains code but that code was never executed, the count is displayed as \fB#####\fP\&. .SS OPTIONS .INDENT 0.0 .TP .B \-a, \-\-all\-blocks Display all basic blocks. If there are multiple blocks for a single line of source code, this option causes llvm\-cov to show the count for each block instead of just one count for the entire line. .UNINDENT .INDENT 0.0 .TP .B \-b, \-\-branch\-probabilities Display conditional branch probabilities and a summary of branch information. .UNINDENT .INDENT 0.0 .TP .B \-c, \-\-branch\-counts Display branch counts instead of probabilities (requires \-b). .UNINDENT .INDENT 0.0 .TP .B \-f, \-\-function\-summaries Show a summary of coverage for each function instead of just one summary for an entire source file. .UNINDENT .INDENT 0.0 .TP .B \-\-help Display available options (\-\-help\-hidden for more). .UNINDENT .INDENT 0.0 .TP .B \-l, \-\-long\-file\-names For coverage output of files included from the main source file, add the main file name followed by \fB##\fP as a prefix to the output file names. This can be combined with the \-\-preserve\-paths option to use complete paths for both the main file and the included file. .UNINDENT .INDENT 0.0 .TP .B \-n, \-\-no\-output Do not output any \fB\&.gcov\fP files. Summary information is still displayed. .UNINDENT .INDENT 0.0 .TP .B \-o=, \-\-object\-directory=, \-\-object\-file= Find objects in DIR or based on FILE\(aqs path. If you specify a particular object file, the coverage data files are expected to have the same base name with \fB\&.gcno\fP and \fB\&.gcda\fP extensions. If you specify a directory, the files are expected in that directory with the same base name as the source file. .UNINDENT .INDENT 0.0 .TP .B \-p, \-\-preserve\-paths Preserve path components when naming the coverage output files. In addition to the source file name, include the directories from the path to that file. The directories are separate by \fB#\fP characters, with \fB\&.\fP directories removed and \fB\&..\fP directories replaced by \fB^\fP characters. When used with the \-\-long\-file\-names option, this applies to both the main file name and the included file name. .UNINDENT .INDENT 0.0 .TP .B \-u, \-\-unconditional\-branches Include unconditional branches in the output for the \-\-branch\-probabilities option. .UNINDENT .INDENT 0.0 .TP .B \-version Display the version of llvm\-cov. .UNINDENT .SS EXIT STATUS .sp \fBllvm\-cov gcov\fP returns 1 if it cannot read input files. Otherwise, it exits with zero. .SH SHOW COMMAND .SS SYNOPSIS .sp \fBllvm\-cov show\fP [\fIoptions\fP] \-instr\-profile \fIPROFILE\fP \fIBIN\fP [\fI\-object BIN,...\fP] [[\fI\-object BIN\fP]] [\fISOURCES\fP] .SS DESCRIPTION .sp The \fBllvm\-cov show\fP command shows line by line coverage of the binaries \fIBIN\fP,... using the profile data \fIPROFILE\fP\&. It can optionally be filtered to only show the coverage for the files listed in \fISOURCES\fP\&. .sp To use \fBllvm\-cov show\fP, you need a program that is compiled with instrumentation to emit profile and coverage data. To build such a program with \fBclang\fP use the \fB\-fprofile\-instr\-generate\fP and \fB\-fcoverage\-mapping\fP flags. If linking with the \fBclang\fP driver, pass \fB\-fprofile\-instr\-generate\fP to the link stage to make sure the necessary runtime libraries are linked in. .sp The coverage information is stored in the built executable or library itself, and this is what you should pass to \fBllvm\-cov show\fP as a \fIBIN\fP argument. The profile data is generated by running this instrumented program normally. When the program exits it will write out a raw profile file, typically called \fBdefault.profraw\fP, which can be converted to a format that is suitable for the \fIPROFILE\fP argument using the \fBllvm\-profdata merge\fP tool. .SS OPTIONS .INDENT 0.0 .TP .B \-show\-line\-counts Show the execution counts for each line. Defaults to true, unless another \fB\-show\fP option is used. .UNINDENT .INDENT 0.0 .TP .B \-show\-expansions Expand inclusions, such as preprocessor macros or textual inclusions, inline in the display of the source file. Defaults to false. .UNINDENT .INDENT 0.0 .TP .B \-show\-instantiations For source regions that are instantiated multiple times, such as templates in \fBC++\fP, show each instantiation separately as well as the combined summary. Defaults to true. .UNINDENT .INDENT 0.0 .TP .B \-show\-regions Show the execution counts for each region by displaying a caret that points to the character where the region starts. Defaults to false. .UNINDENT .INDENT 0.0 .TP .B \-show\-line\-counts\-or\-regions Show the execution counts for each line if there is only one region on the line, but show the individual regions if there are multiple on the line. Defaults to false. .UNINDENT .INDENT 0.0 .TP .B \-use\-color Enable or disable color output. By default this is autodetected. .UNINDENT .INDENT 0.0 .TP .B \-arch=[*NAMES*] Specify a list of architectures such that the Nth entry in the list corresponds to the Nth specified binary. If the covered object is a universal binary, this specifies the architecture to use. It is an error to specify an architecture that is not included in the universal binary or to use an architecture that does not match a non\-universal binary. .UNINDENT .INDENT 0.0 .TP .B \-name= Show code coverage only for functions with the given name. .UNINDENT .INDENT 0.0 .TP .B \-name\-whitelist= Show code coverage only for functions listed in the given file. Each line in the file should start with \fIwhitelist_fun:\fP, immediately followed by the name of the function to accept. This name can be a wildcard expression. .UNINDENT .INDENT 0.0 .TP .B \-name\-regex= Show code coverage only for functions that match the given regular expression. .UNINDENT .INDENT 0.0 .TP +.B \-ignore\-filename\-regex= +Skip source code files with file paths that match the given regular expression. +.UNINDENT +.INDENT 0.0 +.TP .B \-format= Use the specified output format. The supported formats are: "text", "html". .UNINDENT .INDENT 0.0 .TP .B \-tab\-size= Replace tabs with spaces when preparing reports. Currently, this is only supported for the html format. .UNINDENT .INDENT 0.0 .TP .B \-output\-dir=PATH Specify a directory to write coverage reports into. If the directory does not exist, it is created. When used in function view mode (i.e when \-name or \-name\-regex are used to select specific functions), the report is written to PATH/functions.EXTENSION. When used in file view mode, a report for each file is written to PATH/REL_PATH_TO_FILE.EXTENSION. .UNINDENT .INDENT 0.0 .TP .B \-Xdemangler=| Specify a symbol demangler. This can be used to make reports more human\-readable. This option can be specified multiple times to supply arguments to the demangler (e.g \fI\-Xdemangler c++filt \-Xdemangler \-n\fP for C++). The demangler is expected to read a newline\-separated list of symbols from stdin and write a newline\-separated list of the same length to stdout. .UNINDENT .INDENT 0.0 .TP .B \-num\-threads=N, \-j=N Use N threads to write file reports (only applicable when \-output\-dir is specified). When N=0, llvm\-cov auto\-detects an appropriate number of threads to use. This is the default. .UNINDENT .INDENT 0.0 .TP .B \-line\-coverage\-gt= Show code coverage only for functions with line coverage greater than the given threshold. .UNINDENT .INDENT 0.0 .TP .B \-line\-coverage\-lt= Show code coverage only for functions with line coverage less than the given threshold. .UNINDENT .INDENT 0.0 .TP .B \-region\-coverage\-gt= Show code coverage only for functions with region coverage greater than the given threshold. .UNINDENT .INDENT 0.0 .TP .B \-region\-coverage\-lt= Show code coverage only for functions with region coverage less than the given threshold. .UNINDENT .INDENT 0.0 .TP .B \-path\-equivalence=, Map the paths in the coverage data to local source file paths. This allows you to generate the coverage data on one machine, and then use llvm\-cov on a different machine where you have the same files on a different path. .UNINDENT .SH REPORT COMMAND .SS SYNOPSIS .sp \fBllvm\-cov report\fP [\fIoptions\fP] \-instr\-profile \fIPROFILE\fP \fIBIN\fP [\fI\-object BIN,...\fP] [[\fI\-object BIN\fP]] [\fISOURCES\fP] .SS DESCRIPTION .sp The \fBllvm\-cov report\fP command displays a summary of the coverage of the binaries \fIBIN\fP,... using the profile data \fIPROFILE\fP\&. It can optionally be filtered to only show the coverage for the files listed in \fISOURCES\fP\&. .sp If no source files are provided, a summary line is printed for each file in the -coverage data. If any files are provided, summaries are shown for each function -in the listed files instead. +coverage data. If any files are provided, summaries can be shown for each +function in the listed files if the \fB\-show\-functions\fP option is enabled. .sp For information on compiling programs for coverage and generating profile data, see \fI\%SHOW COMMAND\fP\&. .SS OPTIONS .INDENT 0.0 .TP .B \-use\-color[=VALUE] Enable or disable color output. By default this is autodetected. .UNINDENT .INDENT 0.0 .TP .B \-arch= If the covered binary is a universal binary, select the architecture to use. It is an error to specify an architecture that is not included in the universal binary or to use an architecture that does not match a non\-universal binary. .UNINDENT .INDENT 0.0 .TP .B \-show\-functions Show coverage summaries for each function. Defaults to false. .UNINDENT .INDENT 0.0 .TP .B \-show\-instantiation\-summary Show statistics for all function instantiations. Defaults to false. .UNINDENT +.INDENT 0.0 +.TP +.B \-ignore\-filename\-regex= +Skip source code files with file paths that match the given regular expression. +.UNINDENT .SH EXPORT COMMAND .SS SYNOPSIS .sp -\fBllvm\-cov export\fP [\fIoptions\fP] \-instr\-profile \fIPROFILE\fP \fIBIN\fP [\fI\-object BIN,...\fP] [[\fI\-object BIN\fP]] +\fBllvm\-cov export\fP [\fIoptions\fP] \-instr\-profile \fIPROFILE\fP \fIBIN\fP [\fI\-object BIN,...\fP] [[\fI\-object BIN\fP]] [\fISOURCES\fP] .SS DESCRIPTION .sp The \fBllvm\-cov export\fP command exports regions, functions, expansions, and summaries of the coverage of the binaries \fIBIN\fP,... using the profile data -\fIPROFILE\fP as JSON. +\fIPROFILE\fP as JSON. It can optionally be filtered to only export the coverage +for the files listed in \fISOURCES\fP\&. .sp For information on compiling programs for coverage and generating profile data, see \fI\%SHOW COMMAND\fP\&. .SS OPTIONS .INDENT 0.0 .TP .B \-arch= If the covered binary is a universal binary, select the architecture to use. It is an error to specify an architecture that is not included in the universal binary or to use an architecture that does not match a non\-universal binary. .UNINDENT .INDENT 0.0 .TP .B \-summary\-only Export only summary information for each file in the coverage data. This mode will not export coverage information for smaller units such as individual functions or regions. The result will be the same as produced by :program: \fIllvm\-cov report\fP command, but presented in JSON format rather than text. .UNINDENT +.INDENT 0.0 +.TP +.B \-ignore\-filename\-regex= +Skip source code files with file paths that match the given regular expression. +.UNINDENT .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-diff/llvm-diff.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-diff/llvm-diff.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-diff/llvm-diff.1 (revision 337162) @@ -1,77 +1,77 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-DIFF" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-DIFF" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-diff \- LLVM structural 'diff' . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-diff\fP [\fIoptions\fP] \fImodule 1\fP \fImodule 2\fP [\fIglobal name ...\fP] .SH DESCRIPTION .sp \fBllvm\-diff\fP compares the structure of two LLVM modules, primarily focusing on differences in function definitions. Insignificant differences, such as changes in the ordering of globals or in the names of local values, are ignored. .sp An input module will be interpreted as an assembly file if its name ends in \(aq.ll\(aq; otherwise it will be read in as a bitcode file. .sp If a list of global names is given, just the values with those names are compared; otherwise, all global values are compared, and diagnostics are produced for globals which only appear in one module or the other. .sp \fBllvm\-diff\fP compares two functions by comparing their basic blocks, beginning with the entry blocks. If the terminators seem to match, then the corresponding successors are compared; otherwise they are ignored. This algorithm is very sensitive to changes in control flow, which tend to stop any downstream changes from being detected. .sp \fBllvm\-diff\fP is intended as a debugging tool for writers of LLVM passes and frontends. It does not have a stable output format. .SH EXIT STATUS .sp If \fBllvm\-diff\fP finds no differences between the modules, it will exit with 0 and produce no output. Otherwise it will exit with a non\-zero value. .SH BUGS .sp Many important differences, like changes in linkage or function attributes, are not diagnosed. .sp Changes in memory behavior (for example, coalescing loads) can cause massive detected differences in blocks. .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-dis/llvm-dis.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-dis/llvm-dis.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-dis/llvm-dis.1 (revision 337162) @@ -1,88 +1,88 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-DIS" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-DIS" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-dis \- LLVM disassembler . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-dis\fP [\fIoptions\fP] [\fIfilename\fP] .SH DESCRIPTION .sp The \fBllvm\-dis\fP command is the LLVM disassembler. It takes an LLVM bitcode file and converts it into human\-readable LLVM assembly language. .sp If filename is omitted or specified as \fB\-\fP, \fBllvm\-dis\fP reads its input from standard input. .sp If the input is being read from standard input, then \fBllvm\-dis\fP will send its output to standard output by default. Otherwise, the output will be written to a file named after the input file, with a \fB\&.ll\fP suffix added (any existing \fB\&.bc\fP suffix will first be removed). You can override the choice of output file using the \fB\-o\fP option. .SH OPTIONS .sp \fB\-f\fP .INDENT 0.0 .INDENT 3.5 Enable binary output on terminals. Normally, \fBllvm\-dis\fP will refuse to write raw bitcode output if the output stream is a terminal. With this option, \fBllvm\-dis\fP will write raw bitcode regardless of the output device. .UNINDENT .UNINDENT .sp \fB\-help\fP .INDENT 0.0 .INDENT 3.5 Print a summary of command line options. .UNINDENT .UNINDENT .sp \fB\-o\fP \fIfilename\fP .INDENT 0.0 .INDENT 3.5 Specify the output file name. If \fIfilename\fP is \-, then the output is sent to standard output. .UNINDENT .UNINDENT .SH EXIT STATUS .sp If \fBllvm\-dis\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH SEE ALSO .sp llvm\-as|llvm\-as .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-dwarfdump/llvm-dwarfdump.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-dwarfdump/llvm-dwarfdump.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-dwarfdump/llvm-dwarfdump.1 (revision 337162) @@ -1,189 +1,189 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-DWARFDUMP" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-DWARFDUMP" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-dwarfdump \- dump and verify DWARF debug information . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-dwarfdump\fP [\fIoptions\fP] [\fIfilename ...\fP] .SH DESCRIPTION .sp \fBllvm\-dwarfdump\fP parses DWARF sections in object files, archives, and \fI\&.dSYM\fP bundles and prints their contents in human\-readable form. Only the .debug_info section is printed unless one of the section\-specific options or \fI\%\-\-all\fP is specified. .SH OPTIONS .INDENT 0.0 .TP .B \-a, \-\-all Disassemble all supported DWARF sections. .UNINDENT .INDENT 0.0 .TP .B \-\-arch= Dump DWARF debug information for the specified CPU architecture. Architectures may be specified by name or by number. This option can be specified multiple times, once for each desired architecture. All CPU architectures will be printed by default. .UNINDENT .INDENT 0.0 .TP .B \-c, \-\-show\-children Show a debug info entry\(aqs children when using the \fI\%\-\-debug\-info\fP, \fI\%\-\-find\fP, and \fI\%\-\-name\fP options. .UNINDENT .INDENT 0.0 .TP .B \-f , \-\-find= Search for the exact text in the accelerator tables and print the matching debug information entries. When there is no accelerator tables or the name of the DIE you are looking for is not found in the accelerator tables, try using the slower but more complete \fI\%\-\-name\fP option. .UNINDENT .INDENT 0.0 .TP .B \-F, \-\-show\-form Show DWARF form types after the DWARF attribute types. .UNINDENT .INDENT 0.0 .TP .B \-h, \-\-help Show help and usage for this command. .UNINDENT .INDENT 0.0 .TP .B \-i, \-\-ignore\-case Ignore case distinctions in when searching entries by name or by regular expression. .UNINDENT .INDENT 0.0 .TP .B \-n , \-\-name= Find and print all debug info entries whose name (\fIDW_AT_name\fP attribute) matches the exact text in . Use the \fI\%\-\-regex\fP option to have become a regular expression for more flexible pattern matching. .UNINDENT .INDENT 0.0 .TP .B \-\-lookup=
Lookup
in the debug information and print out the file, function, block, and line table details. .UNINDENT .INDENT 0.0 .TP .B \-o , \-\-out\-file= Redirect output to a file specified by . .UNINDENT .INDENT 0.0 .TP .B \-p, \-\-show\-parents Show a debug info entry\(aqs parent objects when using the \fI\%\-\-debug\-info\fP, \fI\%\-\-find\fP, and \fI\%\-\-name\fP options. .UNINDENT .INDENT 0.0 .TP .B \-r , \-\-recurse\-depth= Only recurse to a maximum depth of when dumping debug info entries. .UNINDENT .INDENT 0.0 .TP .B \-\-statistics Collect debug info quality metrics and print the results as machine\-readable single\-line JSON output. .UNINDENT .INDENT 0.0 .TP .B \-x, \-\-regex Treat any strings as regular expressions when searching instead of just as an exact string match. .UNINDENT .INDENT 0.0 .TP .B \-u, \-\-uuid Show the UUID for each architecture. .UNINDENT .INDENT 0.0 .TP .B \-\-diff Dump the output in a format that is more friendly for comparing DWARF output from two different files. .UNINDENT .INDENT 0.0 .TP .B \-v, \-\-verbose Display verbose information when dumping. This can help to debug DWARF issues. .UNINDENT .INDENT 0.0 .TP .B \-\-verify Verify the structure of the DWARF information by verifying the compile unit chains, DIE relationships graph, address ranges, and more. .UNINDENT .INDENT 0.0 .TP .B \-\-version Display the version of the tool. .UNINDENT .INDENT 0.0 .TP .B \-\-debug\-abbrev, \-\-debug\-aranges, \-\-debug\-cu\-index, \-\-debug\-frame [=], \-\-debug\-gnu\-pubnames, \-\-debug\-gnu\-pubtypes, \-\-debug\-info [=], \-\-debug\-line [=], \-\-debug\-loc [=], \-\-debug\-macro, \-\-debug\-pubnames, \-\-debug\-pubtypes, \-\-debug\-ranges, \-\-debug\-str, \-\-debug\-str\-offsets, \-\-debug\-tu\-index, \-\-debug\-types, \-\-eh\-frame, \-\-gdb\-index, \-\-apple\-names, \-\-apple\-types, \-\-apple\-namespaces, \-\-apple\-objc Dump the specified DWARF section by name. Only the \fI\&.debug_info\fP section is shown by default. Some entries support adding an \fI=\fP as a way to provide an optional offset of the exact entry to dump within the respective section. When an offset is provided, only the entry at that offset will be dumped, else the entire section will be dumped. Children of items at a specific offset can be dumped by also using the \fI\%\-\-show\-children\fP option where applicable. .UNINDENT .SH EXIT STATUS .sp \fBllvm\-dwarfdump\fP returns 0 if the input files were parsed and dumped successfully. Otherwise, it returns 1. .SH SEE ALSO .sp \fBdsymutil(1)\fP .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-extract/llvm-extract.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-extract/llvm-extract.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-extract/llvm-extract.1 (revision 337162) @@ -1,129 +1,129 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-EXTRACT" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-EXTRACT" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-extract \- extract a function from an LLVM module . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-extract\fP [\fIoptions\fP] \fB\-\-func\fP \fIfunction\-name\fP [\fIfilename\fP] .SH DESCRIPTION .sp The \fBllvm\-extract\fP command takes the name of a function and extracts it from the specified LLVM bitcode file. It is primarily used as a debugging tool to reduce test cases from larger programs that are triggering a bug. .sp In addition to extracting the bitcode of the specified function, \fBllvm\-extract\fP will also remove unreachable global variables, prototypes, and unused types. .sp The \fBllvm\-extract\fP command reads its input from standard input if filename is omitted or if filename is \fB\-\fP\&. The output is always written to standard output, unless the \fB\-o\fP option is specified (see below). .SH OPTIONS .sp \fB\-f\fP .INDENT 0.0 .INDENT 3.5 Enable binary output on terminals. Normally, \fBllvm\-extract\fP will refuse to write raw bitcode output if the output stream is a terminal. With this option, \fBllvm\-extract\fP will write raw bitcode regardless of the output device. .UNINDENT .UNINDENT .sp \fB\-\-func\fP \fIfunction\-name\fP .INDENT 0.0 .INDENT 3.5 Extract the function named \fIfunction\-name\fP from the LLVM bitcode. May be specified multiple times to extract multiple functions at once. .UNINDENT .UNINDENT .sp \fB\-\-rfunc\fP \fIfunction\-regular\-expr\fP .INDENT 0.0 .INDENT 3.5 Extract the function(s) matching \fIfunction\-regular\-expr\fP from the LLVM bitcode. All functions matching the regular expression will be extracted. May be specified multiple times. .UNINDENT .UNINDENT .sp \fB\-\-glob\fP \fIglobal\-name\fP .INDENT 0.0 .INDENT 3.5 Extract the global variable named \fIglobal\-name\fP from the LLVM bitcode. May be specified multiple times to extract multiple global variables at once. .UNINDENT .UNINDENT .sp \fB\-\-rglob\fP \fIglob\-regular\-expr\fP .INDENT 0.0 .INDENT 3.5 Extract the global variable(s) matching \fIglobal\-regular\-expr\fP from the LLVM bitcode. All global variables matching the regular expression will be extracted. May be specified multiple times. .UNINDENT .UNINDENT .sp \fB\-help\fP .INDENT 0.0 .INDENT 3.5 Print a summary of command line options. .UNINDENT .UNINDENT .sp \fB\-o\fP \fIfilename\fP .INDENT 0.0 .INDENT 3.5 Specify the output filename. If filename is "\-" (the default), then \fBllvm\-extract\fP sends its output to standard output. .UNINDENT .UNINDENT .sp \fB\-S\fP .INDENT 0.0 .INDENT 3.5 Write output in LLVM intermediate language (instead of bitcode). .UNINDENT .UNINDENT .SH EXIT STATUS .sp If \fBllvm\-extract\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH SEE ALSO .sp bugpoint .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-link/llvm-link.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-link/llvm-link.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-link/llvm-link.1 (revision 337162) @@ -1,89 +1,89 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-LINK" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-LINK" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-link \- LLVM bitcode linker . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-link\fP [\fIoptions\fP] \fIfilename ...\fP .SH DESCRIPTION .sp \fBllvm\-link\fP takes several LLVM bitcode files and links them together into a single LLVM bitcode file. It writes the output file to standard output, unless the \fB\-o\fP option is used to specify a filename. .SH OPTIONS .INDENT 0.0 .TP .B \-f Enable binary output on terminals. Normally, \fBllvm\-link\fP will refuse to write raw bitcode output if the output stream is a terminal. With this option, \fBllvm\-link\fP will write raw bitcode regardless of the output device. .UNINDENT .INDENT 0.0 .TP .B \-o filename Specify the output file name. If \fBfilename\fP is "\fB\-\fP", then \fBllvm\-link\fP will write its output to standard output. .UNINDENT .INDENT 0.0 .TP .B \-S Write output in LLVM intermediate language (instead of bitcode). .UNINDENT .INDENT 0.0 .TP .B \-d If specified, \fBllvm\-link\fP prints a human\-readable version of the output bitcode file to standard error. .UNINDENT .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .INDENT 0.0 .TP .B \-v Verbose mode. Print information about what \fBllvm\-link\fP is doing. This typically includes a message for each bitcode file linked in and for each library found. .UNINDENT .SH EXIT STATUS .sp If \fBllvm\-link\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-mca/Makefile =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-mca/Makefile (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-mca/Makefile (revision 337162) @@ -1,39 +1,38 @@ # $FreeBSD$ PROG_CXX= llvm-mca -MAN= SRCDIR= tools/llvm-mca SRCS+= CodeRegion.cpp SRCS+= Context.cpp SRCS+= DispatchStage.cpp SRCS+= DispatchStatistics.cpp SRCS+= ExecuteStage.cpp SRCS+= FetchStage.cpp SRCS+= HWEventListener.cpp SRCS+= HardwareUnit.cpp SRCS+= InstrBuilder.cpp SRCS+= Instruction.cpp SRCS+= InstructionInfoView.cpp SRCS+= InstructionTables.cpp SRCS+= LSUnit.cpp SRCS+= Pipeline.cpp SRCS+= PipelinePrinter.cpp SRCS+= RegisterFile.cpp SRCS+= RegisterFileStatistics.cpp SRCS+= ResourcePressureView.cpp SRCS+= RetireControlUnit.cpp SRCS+= RetireControlUnitStatistics.cpp SRCS+= RetireStage.cpp SRCS+= Scheduler.cpp SRCS+= SchedulerStatistics.cpp SRCS+= Stage.cpp SRCS+= SummaryView.cpp SRCS+= Support.cpp SRCS+= TimelineView.cpp SRCS+= View.cpp SRCS+= llvm-mca.cpp LIBADD+= z .include "../llvm.prog.mk" Index: projects/clang700-import/usr.bin/clang/llvm-mca/llvm-mca.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-mca/llvm-mca.1 (nonexistent) +++ projects/clang700-import/usr.bin/clang/llvm-mca/llvm-mca.1 (revision 337162) @@ -0,0 +1,886 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-MCA" "1" "2018-08-02" "7" "LLVM" +.SH NAME +llvm-mca \- LLVM Machine Code Analyzer +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.SH SYNOPSIS +.sp +\fBllvm\-mca\fP [\fIoptions\fP] [input] +.SH DESCRIPTION +.sp +\fBllvm\-mca\fP is a performance analysis tool that uses information +available in LLVM (e.g. scheduling models) to statically measure the performance +of machine code in a specific CPU. +.sp +Performance is measured in terms of throughput as well as processor resource +consumption. The tool currently works for processors with an out\-of\-order +backend, for which there is a scheduling model available in LLVM. +.sp +The main goal of this tool is not just to predict the performance of the code +when run on the target, but also help with diagnosing potential performance +issues. +.sp +Given an assembly code sequence, llvm\-mca estimates the Instructions Per Cycle +(IPC), as well as hardware resource pressure. The analysis and reporting style +were inspired by the IACA tool from Intel. +.sp +\fBllvm\-mca\fP allows the usage of special code comments to mark regions of +the assembly code to be analyzed. A comment starting with substring +\fBLLVM\-MCA\-BEGIN\fP marks the beginning of a code region. A comment starting with +substring \fBLLVM\-MCA\-END\fP marks the end of a code region. For example: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +# LLVM\-MCA\-BEGIN My Code Region + ... +# LLVM\-MCA\-END +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Multiple regions can be specified provided that they do not overlap. A code +region can have an optional description. If no user\-defined region is specified, +then \fBllvm\-mca\fP assumes a default region which contains every +instruction in the input file. Every region is analyzed in isolation, and the +final performance report is the union of all the reports generated for every +code region. +.sp +Inline assembly directives may be used from source code to annotate the +assembly text: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +int foo(int a, int b) { + __asm volatile("# LLVM\-MCA\-BEGIN foo"); + a += 42; + __asm volatile("# LLVM\-MCA\-END"); + a *= b; + return a; +} +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +So for example, you can compile code with clang, output assembly, and pipe it +directly into llvm\-mca for analysis: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ clang foo.c \-O2 \-target x86_64\-unknown\-unknown \-S \-o \- | llvm\-mca \-mcpu=btver2 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Or for Intel syntax: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ clang foo.c \-O2 \-target x86_64\-unknown\-unknown \-mllvm \-x86\-asm\-syntax=intel \-S \-o \- | llvm\-mca \-mcpu=btver2 +.ft P +.fi +.UNINDENT +.UNINDENT +.SH OPTIONS +.sp +If \fBinput\fP is "\fB\-\fP" or omitted, \fBllvm\-mca\fP reads from standard +input. Otherwise, it will read from the specified filename. +.sp +If the \fB\-o\fP option is omitted, then \fBllvm\-mca\fP will send its output +to standard output if the input is from standard input. If the \fB\-o\fP +option specifies "\fB\-\fP", then the output will also be sent to standard output. +.INDENT 0.0 +.TP +.B \-help +Print a summary of command line options. +.UNINDENT +.INDENT 0.0 +.TP +.B \-mtriple= +Specify a target triple string. +.UNINDENT +.INDENT 0.0 +.TP +.B \-march= +Specify the architecture for which to analyze the code. It defaults to the +host default target. +.UNINDENT +.INDENT 0.0 +.TP +.B \-mcpu= +Specify the processor for which to analyze the code. By default, the cpu name +is autodetected from the host. +.UNINDENT +.INDENT 0.0 +.TP +.B \-output\-asm\-variant= +Specify the output assembly variant for the report generated by the tool. +On x86, possible values are [0, 1]. A value of 0 (vic. 1) for this flag enables +the AT&T (vic. Intel) assembly format for the code printed out by the tool in +the analysis report. +.UNINDENT +.INDENT 0.0 +.TP +.B \-dispatch= +Specify a different dispatch width for the processor. The dispatch width +defaults to field \(aqIssueWidth\(aq in the processor scheduling model. If width is +zero, then the default dispatch width is used. +.UNINDENT +.INDENT 0.0 +.TP +.B \-register\-file\-size= +Specify the size of the register file. When specified, this flag limits how +many physical registers are available for register renaming purposes. A value +of zero for this flag means "unlimited number of physical registers". +.UNINDENT +.INDENT 0.0 +.TP +.B \-iterations= +Specify the number of iterations to run. If this flag is set to 0, then the +tool sets the number of iterations to a default value (i.e. 100). +.UNINDENT +.INDENT 0.0 +.TP +.B \-noalias= +If set, the tool assumes that loads and stores don\(aqt alias. This is the +default behavior. +.UNINDENT +.INDENT 0.0 +.TP +.B \-lqueue= +Specify the size of the load queue in the load/store unit emulated by the tool. +By default, the tool assumes an unbound number of entries in the load queue. +A value of zero for this flag is ignored, and the default load queue size is +used instead. +.UNINDENT +.INDENT 0.0 +.TP +.B \-squeue= +Specify the size of the store queue in the load/store unit emulated by the +tool. By default, the tool assumes an unbound number of entries in the store +queue. A value of zero for this flag is ignored, and the default store queue +size is used instead. +.UNINDENT +.INDENT 0.0 +.TP +.B \-timeline +Enable the timeline view. +.UNINDENT +.INDENT 0.0 +.TP +.B \-timeline\-max\-iterations= +Limit the number of iterations to print in the timeline view. By default, the +timeline view prints information for up to 10 iterations. +.UNINDENT +.INDENT 0.0 +.TP +.B \-timeline\-max\-cycles= +Limit the number of cycles in the timeline view. By default, the number of +cycles is set to 80. +.UNINDENT +.INDENT 0.0 +.TP +.B \-resource\-pressure +Enable the resource pressure view. This is enabled by default. +.UNINDENT +.INDENT 0.0 +.TP +.B \-register\-file\-stats +Enable register file usage statistics. +.UNINDENT +.INDENT 0.0 +.TP +.B \-dispatch\-stats +Enable extra dispatch statistics. This view collects and analyzes instruction +dispatch events, as well as static/dynamic dispatch stall events. This view +is disabled by default. +.UNINDENT +.INDENT 0.0 +.TP +.B \-scheduler\-stats +Enable extra scheduler statistics. This view collects and analyzes instruction +issue events. This view is disabled by default. +.UNINDENT +.INDENT 0.0 +.TP +.B \-retire\-stats +Enable extra retire control unit statistics. This view is disabled by default. +.UNINDENT +.INDENT 0.0 +.TP +.B \-instruction\-info +Enable the instruction info view. This is enabled by default. +.UNINDENT +.INDENT 0.0 +.TP +.B \-all\-stats +Print all hardware statistics. This enables extra statistics related to the +dispatch logic, the hardware schedulers, the register file(s), and the retire +control unit. This option is disabled by default. +.UNINDENT +.INDENT 0.0 +.TP +.B \-all\-views +Enable all the view. +.UNINDENT +.INDENT 0.0 +.TP +.B \-instruction\-tables +Prints resource pressure information based on the static information +available from the processor model. This differs from the resource pressure +view because it doesn\(aqt require that the code is simulated. It instead prints +the theoretical uniform distribution of resource pressure for every +instruction in sequence. +.UNINDENT +.SH EXIT STATUS +.sp +\fBllvm\-mca\fP returns 0 on success. Otherwise, an error message is printed +to standard error, and the tool returns 1. +.SH HOW LLVM-MCA WORKS +.sp +\fBllvm\-mca\fP takes assembly code as input. The assembly code is parsed +into a sequence of MCInst with the help of the existing LLVM target assembly +parsers. The parsed sequence of MCInst is then analyzed by a \fBPipeline\fP module +to generate a performance report. +.sp +The Pipeline module simulates the execution of the machine code sequence in a +loop of iterations (default is 100). During this process, the pipeline collects +a number of execution related statistics. At the end of this process, the +pipeline generates and prints a report from the collected statistics. +.sp +Here is an example of a performance report generated by the tool for a +dot\-product of two packed float vectors of four elements. The analysis is +conducted for target x86, cpu btver2. The following result can be produced via +the following command using the example located at +\fBtest/tools/llvm\-mca/X86/BtVer2/dot\-product.s\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ llvm\-mca \-mtriple=x86_64\-unknown\-unknown \-mcpu=btver2 \-iterations=300 dot\-product.s +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +Iterations: 300 +Instructions: 900 +Total Cycles: 610 +Dispatch Width: 2 +IPC: 1.48 +Block RThroughput: 2.0 + + +Instruction Info: +[1]: #uOps +[2]: Latency +[3]: RThroughput +[4]: MayLoad +[5]: MayStore +[6]: HasSideEffects (U) + +[1] [2] [3] [4] [5] [6] Instructions: + 1 2 1.00 vmulps %xmm0, %xmm1, %xmm2 + 1 3 1.00 vhaddps %xmm2, %xmm2, %xmm3 + 1 3 1.00 vhaddps %xmm3, %xmm3, %xmm4 + + +Resources: +[0] \- JALU0 +[1] \- JALU1 +[2] \- JDiv +[3] \- JFPA +[4] \- JFPM +[5] \- JFPU0 +[6] \- JFPU1 +[7] \- JLAGU +[8] \- JMul +[9] \- JSAGU +[10] \- JSTC +[11] \- JVALU0 +[12] \- JVALU1 +[13] \- JVIMUL + + +Resource pressure per iteration: +[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] + \- \- \- 2.00 1.00 2.00 1.00 \- \- \- \- \- \- \- + +Resource pressure by instruction: +[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: + \- \- \- \- 1.00 \- 1.00 \- \- \- \- \- \- \- vmulps %xmm0, %xmm1, %xmm2 + \- \- \- 1.00 \- 1.00 \- \- \- \- \- \- \- \- vhaddps %xmm2, %xmm2, %xmm3 + \- \- \- 1.00 \- 1.00 \- \- \- \- \- \- \- \- vhaddps %xmm3, %xmm3, %xmm4 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +According to this report, the dot\-product kernel has been executed 300 times, +for a total of 900 dynamically executed instructions. +.sp +The report is structured in three main sections. The first section collects a +few performance numbers; the goal of this section is to give a very quick +overview of the performance throughput. In this example, the two important +performance indicators are \fBIPC\fP and \fBBlock RThroughput\fP (Block Reciprocal +Throughput). +.sp +IPC is computed dividing the total number of simulated instructions by the total +number of cycles. A delta between Dispatch Width and IPC is an indicator of a +performance issue. In the absence of loop\-carried data dependencies, the +observed IPC tends to a theoretical maximum which can be computed by dividing +the number of instructions of a single iteration by the \fIBlock RThroughput\fP\&. +.sp +IPC is bounded from above by the dispatch width. That is because the dispatch +width limits the maximum size of a dispatch group. IPC is also limited by the +amount of hardware parallelism. The availability of hardware resources affects +the resource pressure distribution, and it limits the number of instructions +that can be executed in parallel every cycle. A delta between Dispatch +Width and the theoretical maximum IPC is an indicator of a performance +bottleneck caused by the lack of hardware resources. In general, the lower the +Block RThroughput, the better. +.sp +In this example, \fBInstructions per iteration/Block RThroughput\fP is 1.50. Since +there are no loop\-carried dependencies, the observed IPC is expected to approach +1.50 when the number of iterations tends to infinity. The delta between the +Dispatch Width (2.00), and the theoretical maximum IPC (1.50) is an indicator of +a performance bottleneck caused by the lack of hardware resources, and the +\fIResource pressure view\fP can help to identify the problematic resource usage. +.sp +The second section of the report shows the latency and reciprocal +throughput of every instruction in the sequence. That section also reports +extra information related to the number of micro opcodes, and opcode properties +(i.e., \(aqMayLoad\(aq, \(aqMayStore\(aq, and \(aqHasSideEffects\(aq). +.sp +The third section is the \fIResource pressure view\fP\&. This view reports +the average number of resource cycles consumed every iteration by instructions +for every processor resource unit available on the target. Information is +structured in two tables. The first table reports the number of resource cycles +spent on average every iteration. The second table correlates the resource +cycles to the machine instruction in the sequence. For example, every iteration +of the instruction vmulps always executes on resource unit [6] +(JFPU1 \- floating point pipeline #1), consuming an average of 1 resource cycle +per iteration. Note that on AMD Jaguar, vector floating\-point multiply can +only be issued to pipeline JFPU1, while horizontal floating\-point additions can +only be issued to pipeline JFPU0. +.sp +The resource pressure view helps with identifying bottlenecks caused by high +usage of specific hardware resources. Situations with resource pressure mainly +concentrated on a few resources should, in general, be avoided. Ideally, +pressure should be uniformly distributed between multiple resources. +.SS Timeline View +.sp +The timeline view produces a detailed report of each instruction\(aqs state +transitions through an instruction pipeline. This view is enabled by the +command line option \fB\-timeline\fP\&. As instructions transition through the +various stages of the pipeline, their states are depicted in the view report. +These states are represented by the following characters: +.INDENT 0.0 +.IP \(bu 2 +D : Instruction dispatched. +.IP \(bu 2 +e : Instruction executing. +.IP \(bu 2 +E : Instruction executed. +.IP \(bu 2 +R : Instruction retired. +.IP \(bu 2 += : Instruction already dispatched, waiting to be executed. +.IP \(bu 2 +\- : Instruction executed, waiting to be retired. +.UNINDENT +.sp +Below is the timeline view for a subset of the dot\-product example located in +\fBtest/tools/llvm\-mca/X86/BtVer2/dot\-product.s\fP and processed by +\fBllvm\-mca\fP using the following command: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ llvm\-mca \-mtriple=x86_64\-unknown\-unknown \-mcpu=btver2 \-iterations=3 \-timeline dot\-product.s +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +Timeline view: + 012345 +Index 0123456789 + +[0,0] DeeER. . . vmulps %xmm0, %xmm1, %xmm2 +[0,1] D==eeeER . . vhaddps %xmm2, %xmm2, %xmm3 +[0,2] .D====eeeER . vhaddps %xmm3, %xmm3, %xmm4 +[1,0] .DeeE\-\-\-\-\-R . vmulps %xmm0, %xmm1, %xmm2 +[1,1] . D=eeeE\-\-\-R . vhaddps %xmm2, %xmm2, %xmm3 +[1,2] . D====eeeER . vhaddps %xmm3, %xmm3, %xmm4 +[2,0] . DeeE\-\-\-\-\-R . vmulps %xmm0, %xmm1, %xmm2 +[2,1] . D====eeeER . vhaddps %xmm2, %xmm2, %xmm3 +[2,2] . D======eeeER vhaddps %xmm3, %xmm3, %xmm4 + + +Average Wait times (based on the timeline view): +[0]: Executions +[1]: Average time spent waiting in a scheduler\(aqs queue +[2]: Average time spent waiting in a scheduler\(aqs queue while ready +[3]: Average time elapsed from WB until retire stage + + [0] [1] [2] [3] +0. 3 1.0 1.0 3.3 vmulps %xmm0, %xmm1, %xmm2 +1. 3 3.3 0.7 1.0 vhaddps %xmm2, %xmm2, %xmm3 +2. 3 5.7 0.0 0.0 vhaddps %xmm3, %xmm3, %xmm4 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The timeline view is interesting because it shows instruction state changes +during execution. It also gives an idea of how the tool processes instructions +executed on the target, and how their timing information might be calculated. +.sp +The timeline view is structured in two tables. The first table shows +instructions changing state over time (measured in cycles); the second table +(named \fIAverage Wait times\fP) reports useful timing statistics, which should +help diagnose performance bottlenecks caused by long data dependencies and +sub\-optimal usage of hardware resources. +.sp +An instruction in the timeline view is identified by a pair of indices, where +the first index identifies an iteration, and the second index is the +instruction index (i.e., where it appears in the code sequence). Since this +example was generated using 3 iterations: \fB\-iterations=3\fP, the iteration +indices range from 0\-2 inclusively. +.sp +Excluding the first and last column, the remaining columns are in cycles. +Cycles are numbered sequentially starting from 0. +.sp +From the example output above, we know the following: +.INDENT 0.0 +.IP \(bu 2 +Instruction [1,0] was dispatched at cycle 1. +.IP \(bu 2 +Instruction [1,0] started executing at cycle 2. +.IP \(bu 2 +Instruction [1,0] reached the write back stage at cycle 4. +.IP \(bu 2 +Instruction [1,0] was retired at cycle 10. +.UNINDENT +.sp +Instruction [1,0] (i.e., vmulps from iteration #1) does not have to wait in the +scheduler\(aqs queue for the operands to become available. By the time vmulps is +dispatched, operands are already available, and pipeline JFPU1 is ready to +serve another instruction. So the instruction can be immediately issued on the +JFPU1 pipeline. That is demonstrated by the fact that the instruction only +spent 1cy in the scheduler\(aqs queue. +.sp +There is a gap of 5 cycles between the write\-back stage and the retire event. +That is because instructions must retire in program order, so [1,0] has to wait +for [0,2] to be retired first (i.e., it has to wait until cycle 10). +.sp +In the example, all instructions are in a RAW (Read After Write) dependency +chain. Register %xmm2 written by vmulps is immediately used by the first +vhaddps, and register %xmm3 written by the first vhaddps is used by the second +vhaddps. Long data dependencies negatively impact the ILP (Instruction Level +Parallelism). +.sp +In the dot\-product example, there are anti\-dependencies introduced by +instructions from different iterations. However, those dependencies can be +removed at register renaming stage (at the cost of allocating register aliases, +and therefore consuming physical registers). +.sp +Table \fIAverage Wait times\fP helps diagnose performance issues that are caused by +the presence of long latency instructions and potentially long data dependencies +which may limit the ILP. Note that \fBllvm\-mca\fP, by default, assumes at +least 1cy between the dispatch event and the issue event. +.sp +When the performance is limited by data dependencies and/or long latency +instructions, the number of cycles spent while in the \fIready\fP state is expected +to be very small when compared with the total number of cycles spent in the +scheduler\(aqs queue. The difference between the two counters is a good indicator +of how large of an impact data dependencies had on the execution of the +instructions. When performance is mostly limited by the lack of hardware +resources, the delta between the two counters is small. However, the number of +cycles spent in the queue tends to be larger (i.e., more than 1\-3cy), +especially when compared to other low latency instructions. +.SS Extra Statistics to Further Diagnose Performance Issues +.sp +The \fB\-all\-stats\fP command line option enables extra statistics and performance +counters for the dispatch logic, the reorder buffer, the retire control unit, +and the register file. +.sp +Below is an example of \fB\-all\-stats\fP output generated by MCA for the +dot\-product example discussed in the previous sections. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +Dynamic Dispatch Stall Cycles: +RAT \- Register unavailable: 0 +RCU \- Retire tokens unavailable: 0 +SCHEDQ \- Scheduler full: 272 +LQ \- Load queue full: 0 +SQ \- Store queue full: 0 +GROUP \- Static restrictions on the dispatch group: 0 + + +Dispatch Logic \- number of cycles where we saw N instructions dispatched: +[# dispatched], [# cycles] + 0, 24 (3.9%) + 1, 272 (44.6%) + 2, 314 (51.5%) + + +Schedulers \- number of cycles where we saw N instructions issued: +[# issued], [# cycles] + 0, 7 (1.1%) + 1, 306 (50.2%) + 2, 297 (48.7%) + + +Scheduler\(aqs queue usage: +JALU01, 0/20 +JFPU01, 18/18 +JLSAGU, 0/12 + + +Retire Control Unit \- number of cycles where we saw N instructions retired: +[# retired], [# cycles] + 0, 109 (17.9%) + 1, 102 (16.7%) + 2, 399 (65.4%) + + +Register File statistics: +Total number of mappings created: 900 +Max number of mappings used: 35 + +* Register File #1 \-\- JFpuPRF: + Number of physical registers: 72 + Total number of mappings created: 900 + Max number of mappings used: 35 + +* Register File #2 \-\- JIntegerPRF: + Number of physical registers: 64 + Total number of mappings created: 0 + Max number of mappings used: 0 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +If we look at the \fIDynamic Dispatch Stall Cycles\fP table, we see the counter for +SCHEDQ reports 272 cycles. This counter is incremented every time the dispatch +logic is unable to dispatch a group of two instructions because the scheduler\(aqs +queue is full. +.sp +Looking at the \fIDispatch Logic\fP table, we see that the pipeline was only able +to dispatch two instructions 51.5% of the time. The dispatch group was limited +to one instruction 44.6% of the cycles, which corresponds to 272 cycles. The +dispatch statistics are displayed by either using the command option +\fB\-all\-stats\fP or \fB\-dispatch\-stats\fP\&. +.sp +The next table, \fISchedulers\fP, presents a histogram displaying a count, +representing the number of instructions issued on some number of cycles. In +this case, of the 610 simulated cycles, single +instructions were issued 306 times (50.2%) and there were 7 cycles where +no instructions were issued. +.sp +The \fIScheduler\(aqs queue usage\fP table shows that the maximum number of buffer +entries (i.e., scheduler queue entries) used at runtime. Resource JFPU01 +reached its maximum (18 of 18 queue entries). Note that AMD Jaguar implements +three schedulers: +.INDENT 0.0 +.IP \(bu 2 +JALU01 \- A scheduler for ALU instructions. +.IP \(bu 2 +JFPU01 \- A scheduler floating point operations. +.IP \(bu 2 +JLSAGU \- A scheduler for address generation. +.UNINDENT +.sp +The dot\-product is a kernel of three floating point instructions (a vector +multiply followed by two horizontal adds). That explains why only the floating +point scheduler appears to be used. +.sp +A full scheduler queue is either caused by data dependency chains or by a +sub\-optimal usage of hardware resources. Sometimes, resource pressure can be +mitigated by rewriting the kernel using different instructions that consume +different scheduler resources. Schedulers with a small queue are less resilient +to bottlenecks caused by the presence of long data dependencies. +The scheduler statistics are displayed by +using the command option \fB\-all\-stats\fP or \fB\-scheduler\-stats\fP\&. +.sp +The next table, \fIRetire Control Unit\fP, presents a histogram displaying a count, +representing the number of instructions retired on some number of cycles. In +this case, of the 610 simulated cycles, two instructions were retired during +the same cycle 399 times (65.4%) and there were 109 cycles where no +instructions were retired. The retire statistics are displayed by using the +command option \fB\-all\-stats\fP or \fB\-retire\-stats\fP\&. +.sp +The last table presented is \fIRegister File statistics\fP\&. Each physical register +file (PRF) used by the pipeline is presented in this table. In the case of AMD +Jaguar, there are two register files, one for floating\-point registers +(JFpuPRF) and one for integer registers (JIntegerPRF). The table shows that of +the 900 instructions processed, there were 900 mappings created. Since this +dot\-product example utilized only floating point registers, the JFPuPRF was +responsible for creating the 900 mappings. However, we see that the pipeline +only used a maximum of 35 of 72 available register slots at any given time. We +can conclude that the floating point PRF was the only register file used for +the example, and that it was never resource constrained. The register file +statistics are displayed by using the command option \fB\-all\-stats\fP or +\fB\-register\-file\-stats\fP\&. +.sp +In this example, we can conclude that the IPC is mostly limited by data +dependencies, and not by resource pressure. +.SS Instruction Flow +.sp +This section describes the instruction flow through MCA\(aqs default out\-of\-order +pipeline, as well as the functional units involved in the process. +.sp +The default pipeline implements the following sequence of stages used to +process instructions. +.INDENT 0.0 +.IP \(bu 2 +Dispatch (Instruction is dispatched to the schedulers). +.IP \(bu 2 +Issue (Instruction is issued to the processor pipelines). +.IP \(bu 2 +Write Back (Instruction is executed, and results are written back). +.IP \(bu 2 +Retire (Instruction is retired; writes are architecturally committed). +.UNINDENT +.sp +The default pipeline only models the out\-of\-order portion of a processor. +Therefore, the instruction fetch and decode stages are not modeled. Performance +bottlenecks in the frontend are not diagnosed. MCA assumes that instructions +have all been decoded and placed into a queue. Also, MCA does not model branch +prediction. +.SS Instruction Dispatch +.sp +During the dispatch stage, instructions are picked in program order from a +queue of already decoded instructions, and dispatched in groups to the +simulated hardware schedulers. +.sp +The size of a dispatch group depends on the availability of the simulated +hardware resources. The processor dispatch width defaults to the value +of the \fBIssueWidth\fP in LLVM\(aqs scheduling model. +.sp +An instruction can be dispatched if: +.INDENT 0.0 +.IP \(bu 2 +The size of the dispatch group is smaller than processor\(aqs dispatch width. +.IP \(bu 2 +There are enough entries in the reorder buffer. +.IP \(bu 2 +There are enough physical registers to do register renaming. +.IP \(bu 2 +The schedulers are not full. +.UNINDENT +.sp +Scheduling models can optionally specify which register files are available on +the processor. MCA uses that information to initialize register file +descriptors. Users can limit the number of physical registers that are +globally available for register renaming by using the command option +\fB\-register\-file\-size\fP\&. A value of zero for this option means \fIunbounded\fP\&. +By knowing how many registers are available for renaming, MCA can predict +dispatch stalls caused by the lack of registers. +.sp +The number of reorder buffer entries consumed by an instruction depends on the +number of micro\-opcodes specified by the target scheduling model. MCA\(aqs +reorder buffer\(aqs purpose is to track the progress of instructions that are +"in\-flight," and to retire instructions in program order. The number of +entries in the reorder buffer defaults to the \fIMicroOpBufferSize\fP provided by +the target scheduling model. +.sp +Instructions that are dispatched to the schedulers consume scheduler buffer +entries. \fBllvm\-mca\fP queries the scheduling model to determine the set +of buffered resources consumed by an instruction. Buffered resources are +treated like scheduler resources. +.SS Instruction Issue +.sp +Each processor scheduler implements a buffer of instructions. An instruction +has to wait in the scheduler\(aqs buffer until input register operands become +available. Only at that point, does the instruction becomes eligible for +execution and may be issued (potentially out\-of\-order) for execution. +Instruction latencies are computed by \fBllvm\-mca\fP with the help of the +scheduling model. +.sp +\fBllvm\-mca\fP\(aqs scheduler is designed to simulate multiple processor +schedulers. The scheduler is responsible for tracking data dependencies, and +dynamically selecting which processor resources are consumed by instructions. +It delegates the management of processor resource units and resource groups to a +resource manager. The resource manager is responsible for selecting resource +units that are consumed by instructions. For example, if an instruction +consumes 1cy of a resource group, the resource manager selects one of the +available units from the group; by default, the resource manager uses a +round\-robin selector to guarantee that resource usage is uniformly distributed +between all units of a group. +.sp +\fBllvm\-mca\fP\(aqs scheduler implements three instruction queues: +.INDENT 0.0 +.IP \(bu 2 +WaitQueue: a queue of instructions whose operands are not ready. +.IP \(bu 2 +ReadyQueue: a queue of instructions ready to execute. +.IP \(bu 2 +IssuedQueue: a queue of instructions executing. +.UNINDENT +.sp +Depending on the operand availability, instructions that are dispatched to the +scheduler are either placed into the WaitQueue or into the ReadyQueue. +.sp +Every cycle, the scheduler checks if instructions can be moved from the +WaitQueue to the ReadyQueue, and if instructions from the ReadyQueue can be +issued to the underlying pipelines. The algorithm prioritizes older instructions +over younger instructions. +.SS Write\-Back and Retire Stage +.sp +Issued instructions are moved from the ReadyQueue to the IssuedQueue. There, +instructions wait until they reach the write\-back stage. At that point, they +get removed from the queue and the retire control unit is notified. +.sp +When instructions are executed, the retire control unit flags the +instruction as "ready to retire." +.sp +Instructions are retired in program order. The register file is notified of +the retirement so that it can free the physical registers that were allocated +for the instruction during the register renaming stage. +.SS Load/Store Unit and Memory Consistency Model +.sp +To simulate an out\-of\-order execution of memory operations, \fBllvm\-mca\fP +utilizes a simulated load/store unit (LSUnit) to simulate the speculative +execution of loads and stores. +.sp +Each load (or store) consumes an entry in the load (or store) queue. Users can +specify flags \fB\-lqueue\fP and \fB\-squeue\fP to limit the number of entries in the +load and store queues respectively. The queues are unbounded by default. +.sp +The LSUnit implements a relaxed consistency model for memory loads and stores. +The rules are: +.INDENT 0.0 +.IP 1. 3 +A younger load is allowed to pass an older load only if there are no +intervening stores or barriers between the two loads. +.IP 2. 3 +A younger load is allowed to pass an older store provided that the load does +not alias with the store. +.IP 3. 3 +A younger store is not allowed to pass an older store. +.IP 4. 3 +A younger store is not allowed to pass an older load. +.UNINDENT +.sp +By default, the LSUnit optimistically assumes that loads do not alias +(\fI\-noalias=true\fP) store operations. Under this assumption, younger loads are +always allowed to pass older stores. Essentially, the LSUnit does not attempt +to run any alias analysis to predict when loads and stores do not alias with +each other. +.sp +Note that, in the case of write\-combining memory, rule 3 could be relaxed to +allow reordering of non\-aliasing store operations. That being said, at the +moment, there is no way to further relax the memory model (\fB\-noalias\fP is the +only option). Essentially, there is no option to specify a different memory +type (e.g., write\-back, write\-combining, write\-through; etc.) and consequently +to weaken, or strengthen, the memory model. +.sp +Other limitations are: +.INDENT 0.0 +.IP \(bu 2 +The LSUnit does not know when store\-to\-load forwarding may occur. +.IP \(bu 2 +The LSUnit does not know anything about cache hierarchy and memory types. +.IP \(bu 2 +The LSUnit does not know how to identify serializing operations and memory +fences. +.UNINDENT +.sp +The LSUnit does not attempt to predict if a load or store hits or misses the L1 +cache. It only knows if an instruction "MayLoad" and/or "MayStore." For +loads, the scheduling model provides an "optimistic" load\-to\-use latency (which +usually matches the load\-to\-use latency for when there is a hit in the L1D). +.sp +\fBllvm\-mca\fP does not know about serializing operations or memory\-barrier +like instructions. The LSUnit conservatively assumes that an instruction which +has both "MayLoad" and unmodeled side effects behaves like a "soft" +load\-barrier. That means, it serializes loads without forcing a flush of the +load queue. Similarly, instructions that "MayStore" and have unmodeled side +effects are treated like store barriers. A full memory barrier is a "MayLoad" +and "MayStore" instruction with unmodeled side effects. This is inaccurate, but +it is the best that we can do at the moment with the current information +available in LLVM. +.sp +A load/store barrier consumes one entry of the load/store queue. A load/store +barrier enforces ordering of loads/stores. A younger load cannot pass a load +barrier. Also, a younger store cannot pass a store barrier. A younger load +has to wait for the memory/load barrier to execute. A load/store barrier is +"executed" when it becomes the oldest entry in the load/store queue(s). That +also means, by construction, all of the older loads/stores have been executed. +.sp +In conclusion, the full set of load/store consistency rules are: +.INDENT 0.0 +.IP 1. 3 +A store may not pass a previous store. +.IP 2. 3 +A store may not pass a previous load (regardless of \fB\-noalias\fP). +.IP 3. 3 +A store has to wait until an older store barrier is fully executed. +.IP 4. 3 +A load may pass a previous load. +.IP 5. 3 +A load may not pass a previous store unless \fB\-noalias\fP is set. +.IP 6. 3 +A load has to wait until an older load barrier is fully executed. +.UNINDENT +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2003-2018, LLVM Project +.\" Generated by docutils manpage writer. +. Property changes on: projects/clang700-import/usr.bin/clang/llvm-mca/llvm-mca.1 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: projects/clang700-import/usr.bin/clang/llvm-nm/llvm-nm.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-nm/llvm-nm.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-nm/llvm-nm.1 (revision 337162) @@ -1,216 +1,221 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-NM" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-NM" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-nm \- list LLVM bitcode and object file's symbol table . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-nm\fP [\fIoptions\fP] [\fIfilenames...\fP] .SH DESCRIPTION .sp The \fBllvm\-nm\fP utility lists the names of symbols from the LLVM bitcode files, object files, or \fBar\fP archives containing them, named on the command line. Each symbol is listed along with some simple information about its provenance. If no file name is specified, or \fI\-\fP is used as a file name, \fBllvm\-nm\fP will process a file on its standard input stream. .sp \fBllvm\-nm\fP\(aqs default output format is the traditional BSD \fBnm\fP output format. Each such output record consists of an (optional) 8\-digit hexadecimal address, followed by a type code character, followed by a name, for each symbol. One record is printed per line; fields are separated by spaces. When the address is omitted, it is replaced by 8 spaces. .sp Type code characters currently supported, and their meanings, are as follows: .sp U .INDENT 0.0 .INDENT 3.5 Named object is referenced but undefined in this bitcode file .UNINDENT .UNINDENT .sp C .INDENT 0.0 .INDENT 3.5 Common (multiple definitions link together into one def) .UNINDENT .UNINDENT .sp W .INDENT 0.0 .INDENT 3.5 Weak reference (multiple definitions link together into zero or one definitions) .UNINDENT .UNINDENT .sp t .INDENT 0.0 .INDENT 3.5 Local function (text) object .UNINDENT .UNINDENT .sp T .INDENT 0.0 .INDENT 3.5 Global function (text) object .UNINDENT .UNINDENT .sp d .INDENT 0.0 .INDENT 3.5 Local data object .UNINDENT .UNINDENT .sp D .INDENT 0.0 .INDENT 3.5 Global data object .UNINDENT .UNINDENT .sp ? .INDENT 0.0 .INDENT 3.5 Something unrecognizable .UNINDENT .UNINDENT .sp Because LLVM bitcode files typically contain objects that are not considered to have addresses until they are linked into an executable image or dynamically compiled "just\-in\-time", \fBllvm\-nm\fP does not print an address for any symbol in an LLVM bitcode file, even symbols which are defined in the bitcode file. .SH OPTIONS .INDENT 0.0 .TP .B \-B (default) Use BSD output format. Alias for \fI\-\-format=bsd\fP\&. .UNINDENT .INDENT 0.0 .TP .B \-P Use POSIX.2 output format. Alias for \fI\-\-format=posix\fP\&. .UNINDENT .INDENT 0.0 .TP .B \-\-debug\-syms, \-a Show all symbols, even debugger only. .UNINDENT .INDENT 0.0 .TP .B \-\-defined\-only Print only symbols defined in this file (as opposed to symbols which may be referenced by objects in this file, but not defined in this file.) .UNINDENT .INDENT 0.0 .TP .B \-\-dynamic, \-D Display dynamic symbols instead of normal symbols. .UNINDENT .INDENT 0.0 .TP .B \-\-extern\-only, \-g Print only symbols whose definitions are external; that is, accessible from other files. .UNINDENT .INDENT 0.0 .TP +.B \-\-no\-weak, \-W +Don\(aqt print any weak symbols in the output. +.UNINDENT +.INDENT 0.0 +.TP .B \-\-format=format, \-f format Select an output format; \fIformat\fP may be \fIsysv\fP, \fIposix\fP, or \fIbsd\fP\&. The default is \fIbsd\fP\&. .UNINDENT .INDENT 0.0 .TP .B \-help Print a summary of command\-line options and their meanings. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-sort, \-p Shows symbols in order encountered. .UNINDENT .INDENT 0.0 .TP .B \-\-numeric\-sort, \-n, \-v Sort symbols by address. .UNINDENT .INDENT 0.0 .TP .B \-\-print\-file\-name, \-A, \-o Precede each symbol with the file it came from. .UNINDENT .INDENT 0.0 .TP .B \-\-print\-size, \-S Show symbol size instead of address. .UNINDENT .INDENT 0.0 .TP .B \-\-size\-sort Sort symbols by size. .UNINDENT .INDENT 0.0 .TP .B \-\-undefined\-only, \-u Print only symbols referenced but not defined in this file. .UNINDENT .INDENT 0.0 .TP .B \-\-radix=RADIX, \-t Specify the radix of the symbol address(es). Values accepted d(decimal), x(hexadecomal) and o(octal). .UNINDENT .SH BUGS .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 \fBllvm\-nm\fP does not support the full set of arguments that GNU \fBnm\fP does. .UNINDENT .UNINDENT .UNINDENT .SH EXIT STATUS .sp \fBllvm\-nm\fP exits with an exit code of zero. .SH SEE ALSO .sp llvm\-dis, ar(1), nm(1) .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-pdbutil/llvm-pdbutil.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-pdbutil/llvm-pdbutil.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-pdbutil/llvm-pdbutil.1 (revision 337162) @@ -1,745 +1,745 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-PDBUTIL" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-PDBUTIL" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-pdbutil \- PDB File forensics and diagnostics . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .INDENT 0.0 .IP \(bu 2 \fI\%Synopsis\fP .IP \(bu 2 \fI\%Description\fP .IP \(bu 2 \fI\%Subcommands\fP .INDENT 2.0 .IP \(bu 2 \fI\%pretty\fP .INDENT 2.0 .IP \(bu 2 \fI\%Summary\fP .IP \(bu 2 \fI\%Options\fP .INDENT 2.0 .IP \(bu 2 \fI\%Filtering and Sorting Options\fP .IP \(bu 2 \fI\%Symbol Type Options\fP .IP \(bu 2 \fI\%Other Options\fP .UNINDENT .UNINDENT .IP \(bu 2 \fI\%dump\fP .INDENT 2.0 .IP \(bu 2 \fI\%Summary\fP .IP \(bu 2 \fI\%Options\fP .INDENT 2.0 .IP \(bu 2 \fI\%MSF Container Options\fP .IP \(bu 2 \fI\%Module & File Options\fP .IP \(bu 2 \fI\%Symbol Options\fP .IP \(bu 2 \fI\%Type Record Options\fP .IP \(bu 2 \fI\%Miscellaneous Options\fP .UNINDENT .UNINDENT .IP \(bu 2 \fI\%bytes\fP .INDENT 2.0 .IP \(bu 2 \fI\%Summary\fP .IP \(bu 2 \fI\%Options\fP .INDENT 2.0 .IP \(bu 2 \fI\%MSF File Options\fP .IP \(bu 2 \fI\%PDB Stream Options\fP .IP \(bu 2 \fI\%DBI Stream Options\fP .IP \(bu 2 \fI\%Module Options\fP .IP \(bu 2 \fI\%Type Record Options\fP .UNINDENT .UNINDENT .IP \(bu 2 \fI\%pdb2yaml\fP .INDENT 2.0 .IP \(bu 2 \fI\%Summary\fP .IP \(bu 2 \fI\%Options\fP .UNINDENT .IP \(bu 2 \fI\%yaml2pdb\fP .INDENT 2.0 .IP \(bu 2 \fI\%Summary\fP .IP \(bu 2 \fI\%Options\fP .UNINDENT .IP \(bu 2 \fI\%merge\fP .INDENT 2.0 .IP \(bu 2 \fI\%Summary\fP .IP \(bu 2 \fI\%Options\fP .UNINDENT .UNINDENT .UNINDENT .SH SYNOPSIS .sp \fBllvm\-pdbutil\fP [\fIsubcommand\fP] [\fIoptions\fP] .SH DESCRIPTION .sp Display types, symbols, CodeView records, and other information from a PDB file, as well as manipulate and create PDB files. \fBllvm\-pdbutil\fP is normally used by FileCheck\-based tests to test LLVM\(aqs PDB reading and writing functionality, but can also be used for general PDB file investigation and forensics, or as a replacement for cvdump. .SH SUBCOMMANDS .sp \fBllvm\-pdbutil\fP is separated into several subcommands each tailored to a different purpose. A brief summary of each command follows, with more detail in the sections that follow. .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 \fI\%pretty\fP \- Dump symbol and type information in a format that tries to look as much like the original source code as possible. .IP \(bu 2 \fI\%dump\fP \- Dump low level types and structures from the PDB file, including CodeView records, hash tables, PDB streams, etc. .IP \(bu 2 \fI\%bytes\fP \- Dump data from the PDB file\(aqs streams, records, types, symbols, etc as raw bytes. .IP \(bu 2 \fI\%yaml2pdb\fP \- Given a yaml description of a PDB file, produce a valid PDB file that matches that description. .IP \(bu 2 \fI\%pdb2yaml\fP \- For a given PDB file, produce a YAML description of some or all of the file in a way that the PDB can be reconstructed. .IP \(bu 2 \fI\%merge\fP \- Given two PDBs, produce a third PDB that is the result of merging the two input PDBs. .UNINDENT .UNINDENT .UNINDENT .SS pretty .sp \fBIMPORTANT:\fP .INDENT 0.0 .INDENT 3.5 The \fBpretty\fP subcommand is built on the Windows DIA SDK, and as such is not supported on non\-Windows platforms. .UNINDENT .UNINDENT .sp USAGE: \fBllvm\-pdbutil\fP pretty [\fIoptions\fP] .SS Summary .sp The \fIpretty\fP subcommand displays a very high level representation of your program\(aqs debug info. Since it is built on the Windows DIA SDK which is the standard API that Windows tools and debuggers query debug information, it presents a more authoritative view of how a debugger is going to interpret your debug information than a mode which displays low\-level CodeView records. .SS Options .SS Filtering and Sorting Options .sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 \fIexclude\fP filters take priority over \fIinclude\fP filters. So if a filter matches both an include and an exclude rule, then it is excluded. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-exclude\-compilands= When dumping compilands, compiland source\-file contributions, or per\-compiland symbols, this option instructs \fBllvm\-pdbutil\fP to omit any compilands that match the specified regular expression. .UNINDENT .INDENT 0.0 .TP .B \-exclude\-symbols= When dumping global, public, or per\-compiland symbols, this option instructs \fBllvm\-pdbutil\fP to omit any symbols that match the specified regular expression. .UNINDENT .INDENT 0.0 .TP .B \-exclude\-types= When dumping types, this option instructs \fBllvm\-pdbutil\fP to omit any types that match the specified regular expression. .UNINDENT .INDENT 0.0 .TP .B \-include\-compilands= When dumping compilands, compiland source\-file contributions, or per\-compiland symbols, limit the initial search to only those compilands that match the specified regular expression. .UNINDENT .INDENT 0.0 .TP .B \-include\-symbols= When dumping global, public, or per\-compiland symbols, limit the initial search to only those symbols that match the specified regular expression. .UNINDENT .INDENT 0.0 .TP .B \-include\-types= When dumping types, limit the initial search to only those types that match the specified regular expression. .UNINDENT .INDENT 0.0 .TP .B \-min\-class\-padding= Only display types that have at least the specified amount of alignment padding, accounting for padding in base classes and aggregate field members. .UNINDENT .INDENT 0.0 .TP .B \-min\-class\-padding\-imm= Only display types that have at least the specified amount of alignment padding, ignoring padding in base classes and aggregate field members. .UNINDENT .INDENT 0.0 .TP .B \-min\-type\-size= Only display types T where sizeof(T) is greater than or equal to the specified amount. .UNINDENT .INDENT 0.0 .TP .B \-no\-compiler\-generated Don\(aqt show compiler generated types and symbols .UNINDENT .INDENT 0.0 .TP .B \-no\-enum\-definitions When dumping an enum, don\(aqt show the full enum (e.g. the individual enumerator values). .UNINDENT .INDENT 0.0 .TP .B \-no\-system\-libs Don\(aqt show symbols from system libraries .UNINDENT .SS Symbol Type Options .INDENT 0.0 .TP .B \-all Implies all other options in this category. .UNINDENT .INDENT 0.0 .TP .B \-class\-definitions= Displays class definitions in the specified format. .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =all \- Display all class members including data, constants, typedefs, functions, etc (default) =layout \- Only display members that contribute to class size. =none \- Don\(aqt display class definitions (e.g. only display the name and base list) .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-class\-order Displays classes in the specified order. .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =none \- Undefined / no particular sort order (default) =name \- Sort classes by name =size \- Sort classes by size =padding \- Sort classes by amount of padding =padding\-pct \- Sort classes by percentage of space consumed by padding =padding\-imm \- Sort classes by amount of immediate padding =padding\-pct\-imm \- Sort classes by percentage of space consumed by immediate padding .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-class\-recurse\-depth= When dumping class definitions, stop after recursing the specified number of times. The default is 0, which is no limit. .UNINDENT .INDENT 0.0 .TP .B \-classes Display classes .UNINDENT .INDENT 0.0 .TP .B \-compilands Display compilands (e.g. object files) .UNINDENT .INDENT 0.0 .TP .B \-enums Display enums .UNINDENT .INDENT 0.0 .TP .B \-externals Dump external (e.g. exported) symbols .UNINDENT .INDENT 0.0 .TP .B \-globals Dump global symbols .UNINDENT .INDENT 0.0 .TP .B \-lines Dump the mappings between source lines and code addresses. .UNINDENT .INDENT 0.0 .TP .B \-module\-syms Display symbols (variables, functions, etc) for each compiland .UNINDENT .INDENT 0.0 .TP .B \-sym\-types= Type of symbols to dump when \-globals, \-externals, or \-module\-syms is specified. (default all) .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =thunks \- Display thunk symbols =data \- Display data symbols =funcs \- Display function symbols =all \- Display all symbols (default) .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-symbol\-order= For symbols dumped via the \-module\-syms, \-globals, or \-externals options, sort the results in specified order. .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C =none \- Undefined / no particular sort order =name \- Sort symbols by name =size \- Sort symbols by size .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-typedefs Display typedef types .UNINDENT .INDENT 0.0 .TP .B \-types Display all types (implies \-classes, \-enums, \-typedefs) .UNINDENT .SS Other Options .INDENT 0.0 .TP .B \-color\-output Force color output on or off. By default, color if used if outputting to a terminal. .UNINDENT .INDENT 0.0 .TP .B \-load\-address= When displaying relative virtual addresses, assume the process is loaded at the given address and display what would be the absolute address. .UNINDENT .SS dump .sp USAGE: \fBllvm\-pdbutil\fP dump [\fIoptions\fP] .SS Summary .sp The \fBdump\fP subcommand displays low level information about the structure of a PDB file. It is used heavily by LLVM\(aqs testing infrastructure, but can also be used for PDB forensics. It serves a role similar to that of Microsoft\(aqs \fIcvdump\fP tool. .sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 The \fBdump\fP subcommand exposes internal details of the file format. As such, the reader should be familiar with /PDB/index before using this command. .UNINDENT .UNINDENT .SS Options .SS MSF Container Options .INDENT 0.0 .TP .B \-streams dump a summary of all of the streams in the PDB file. .UNINDENT .INDENT 0.0 .TP .B \-stream\-blocks In conjunction with \fI\%\-streams\fP, add information to the output about what blocks the specified stream occupies. .UNINDENT .INDENT 0.0 .TP .B \-summary Dump MSF and PDB header information. .UNINDENT .SS Module & File Options .INDENT 0.0 .TP .B \-modi= For all options that dump information from each module/compiland, limit to the specified module. .UNINDENT .INDENT 0.0 .TP .B \-files Dump the source files that contribute to each displayed module. .UNINDENT .INDENT 0.0 .TP .B \-il Dump inlinee line information (DEBUG_S_INLINEELINES CodeView subsection) .UNINDENT .INDENT 0.0 .TP .B \-l Dump line information (DEBUG_S_LINES CodeView subsection) .UNINDENT .INDENT 0.0 .TP .B \-modules Dump compiland information .UNINDENT .INDENT 0.0 .TP .B \-xme Dump cross module exports (DEBUG_S_CROSSSCOPEEXPORTS CodeView subsection) .UNINDENT .INDENT 0.0 .TP .B \-xmi Dump cross module imports (DEBUG_S_CROSSSCOPEIMPORTS CodeView subsection) .UNINDENT .SS Symbol Options .INDENT 0.0 .TP .B \-globals dump global symbol records .UNINDENT .INDENT 0.0 .TP .B \-global\-extras dump additional information about the globals, such as hash buckets and hash values. .UNINDENT .INDENT 0.0 .TP .B \-publics dump public symbol records .UNINDENT .INDENT 0.0 .TP .B \-public\-extras dump additional information about the publics, such as hash buckets and hash values. .UNINDENT .INDENT 0.0 .TP .B \-symbols dump symbols (functions, variables, etc) for each module dumped. .UNINDENT .INDENT 0.0 .TP .B \-sym\-data For each symbol record dumped as a result of the \fI\%\-symbols\fP option, display the full bytes of the record in binary as well. .UNINDENT .SS Type Record Options .INDENT 0.0 .TP .B \-types Dump CodeView type records from TPI stream .UNINDENT .INDENT 0.0 .TP .B \-type\-extras Dump additional information from the TPI stream, such as hashes and the type index offsets array. .UNINDENT .INDENT 0.0 .TP .B \-type\-data For each type record dumped, display the full bytes of the record in binary as well. .UNINDENT .INDENT 0.0 .TP .B \-type\-index= Only dump types with the specified type index. .UNINDENT .INDENT 0.0 .TP .B \-ids Dump CodeView type records from IPI stream. .UNINDENT .INDENT 0.0 .TP .B \-id\-extras Dump additional information from the IPI stream, such as hashes and the type index offsets array. .UNINDENT .INDENT 0.0 .TP .B \-id\-data For each ID record dumped, display the full bytes of the record in binary as well. .UNINDENT .INDENT 0.0 .TP .B \-id\-index= only dump ID records with the specified hexadecimal type index. .UNINDENT .INDENT 0.0 .TP .B \-dependents When used in conjunction with \fI\%\-type\-index\fP or \fI\%\-id\-index\fP, dumps the entire dependency graph for the specified index instead of just the single record with the specified index. For example, if type index 0x4000 is a function whose return type has index 0x3000, and you specify \fI\-dependents=0x4000\fP, then this would dump both records (as well as any other dependents in the tree). .UNINDENT .SS Miscellaneous Options .INDENT 0.0 .TP .B \-all Implies most other options. .UNINDENT .INDENT 0.0 .TP .B \-section\-contribs Dump section contributions. .UNINDENT .INDENT 0.0 .TP .B \-section\-headers Dump image section headers. .UNINDENT .INDENT 0.0 .TP .B \-section\-map Dump section map. .UNINDENT .INDENT 0.0 .TP .B \-string\-table Dump PDB string table. .UNINDENT .SS bytes .sp USAGE: \fBllvm\-pdbutil\fP bytes [\fIoptions\fP] .SS Summary .sp Like the \fBdump\fP subcommand, the \fBbytes\fP subcommand displays low level information about the structure of a PDB file, but it is used for even deeper forensics. The \fBbytes\fP subcommand finds various structures in a PDB file based on the command line options specified, and dumps them in hex. Someone working on support for emitting PDBs would use this heavily, for example, to compare one PDB against another PDB to ensure byte\-for\-byte compatibility. It is not enough to simply compare the bytes of an entire file, or an entire stream because it\(aqs perfectly fine for the same structure to exist at different locations in two different PDBs, and "finding" the structure is half the battle. .SS Options .SS MSF File Options .INDENT 0.0 .TP .B \-block\-range= Dump binary data from specified range of MSF file blocks. .UNINDENT .INDENT 0.0 .TP .B \-byte\-range= Dump binary data from specified range of bytes in the file. .UNINDENT .INDENT 0.0 .TP .B \-fpm Dump the MSF free page map. .UNINDENT .INDENT 0.0 .TP .B \-stream\-data= Dump binary data from the specified streams. Format is SN[:Start][@Size]. For example, \fI\-stream\-data=7:3@12\fP dumps 12 bytes from stream 7, starting at offset 3 in the stream. .UNINDENT .SS PDB Stream Options .INDENT 0.0 .TP .B \-name\-map Dump bytes of PDB Name Map .UNINDENT .SS DBI Stream Options .INDENT 0.0 .TP .B \-ec Dump the edit and continue map substream of the DBI stream. .UNINDENT .INDENT 0.0 .TP .B \-files Dump the file info substream of the DBI stream. .UNINDENT .INDENT 0.0 .TP .B \-modi Dump the modi substream of the DBI stream. .UNINDENT .INDENT 0.0 .TP .B \-sc Dump section contributions substream of the DBI stream. .UNINDENT .INDENT 0.0 .TP .B \-sm Dump the section map from the DBI stream. .UNINDENT .INDENT 0.0 .TP .B \-type\-server Dump the type server map from the DBI stream. .UNINDENT .SS Module Options .INDENT 0.0 .TP .B \-mod= Limit all options in this category to the specified module index. By default, options in this category will dump bytes from all modules. .UNINDENT .INDENT 0.0 .TP .B \-chunks Dump the bytes of each module\(aqs C13 debug subsection. .UNINDENT .INDENT 0.0 .TP .B \-split\-chunks When specified with \fI\%\-chunks\fP, split the C13 debug subsection into a separate chunk for each subsection type, and dump them separately. .UNINDENT .INDENT 0.0 .TP .B \-syms Dump the symbol record substream from each module. .UNINDENT .SS Type Record Options .INDENT 0.0 .TP .B \-id= Dump the record from the IPI stream with the given type index. .UNINDENT .INDENT 0.0 .TP .B \-type= Dump the record from the TPI stream with the given type index. .UNINDENT .SS pdb2yaml .sp USAGE: \fBllvm\-pdbutil\fP pdb2yaml [\fIoptions\fP] .SS Summary .SS Options .SS yaml2pdb .sp USAGE: \fBllvm\-pdbutil\fP yaml2pdb [\fIoptions\fP] .SS Summary .sp Generate a PDB file from a YAML description. The YAML syntax is not described here. Instead, use \fI\%llvm\-pdbutil pdb2yaml\fP and examine the output for an example starting point. .SS Options .INDENT 0.0 .TP .B \-pdb= .UNINDENT .sp Write the resulting PDB to the specified file. .SS merge .sp USAGE: \fBllvm\-pdbutil\fP merge [\fIoptions\fP] .SS Summary .sp Merge two PDB files into a single file. .SS Options .INDENT 0.0 .TP .B \-pdb= .UNINDENT .sp Write the resulting PDB to the specified file. .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-profdata/llvm-profdata.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-profdata/llvm-profdata.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-profdata/llvm-profdata.1 (revision 337162) @@ -1,259 +1,259 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-PROFDATA" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-PROFDATA" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-profdata \- Profile data tool . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-profdata\fP \fIcommand\fP [\fIargs...\fP] .SH DESCRIPTION .sp The \fBllvm\-profdata\fP tool is a small utility for working with profile data files. .SH COMMANDS .INDENT 0.0 .IP \(bu 2 \fI\%merge\fP .IP \(bu 2 \fI\%show\fP .UNINDENT .SH MERGE .SS SYNOPSIS .sp \fBllvm\-profdata merge\fP [\fIoptions\fP] [\fIfilename...\fP] .SS DESCRIPTION .sp \fBllvm\-profdata merge\fP takes several profile data files generated by PGO instrumentation and merges them together into a single indexed profile data file. .sp By default profile data is merged without modification. This means that the relative importance of each input file is proportional to the number of samples or counts it contains. In general, the input from a longer training run will be interpreted as relatively more important than a shorter run. Depending on the nature of the training runs it may be useful to adjust the weight given to each input file by using the \fB\-weighted\-input\fP option. .sp Profiles passed in via \fB\-weighted\-input\fP, \fB\-input\-files\fP, or via positional arguments are processed once for each time they are seen. .SS OPTIONS .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .INDENT 0.0 .TP .B \-output=output, \-o=output Specify the output file name. \fIOutput\fP cannot be \fB\-\fP as the resulting indexed profile data can\(aqt be written to standard output. .UNINDENT .INDENT 0.0 .TP .B \-weighted\-input=weight,filename Specify an input file name along with a weight. The profile counts of the supplied \fBfilename\fP will be scaled (multiplied) by the supplied \fBweight\fP, where where \fBweight\fP is a decimal integer >= 1. Input files specified without using this option are assigned a default weight of 1. Examples are shown below. .UNINDENT .INDENT 0.0 .TP .B \-input\-files=path, \-f=path Specify a file which contains a list of files to merge. The entries in this file are newline\-separated. Lines starting with \(aq#\(aq are skipped. Entries may be of the form or ,. .UNINDENT .INDENT 0.0 .TP .B \-instr (default) Specify that the input profile is an instrumentation\-based profile. .UNINDENT .INDENT 0.0 .TP .B \-sample Specify that the input profile is a sample\-based profile. .sp The format of the generated file can be generated in one of three ways: .INDENT 7.0 .TP .B \-binary (default) .UNINDENT .sp Emit the profile using a binary encoding. For instrumentation\-based profile the output format is the indexed binary format. .INDENT 7.0 .TP .B \-text .UNINDENT .sp Emit the profile in text mode. This option can also be used with both sample\-based and instrumentation\-based profile. When this option is used the profile will be dumped in the text format that is parsable by the profile reader. .INDENT 7.0 .TP .B \-gcc .UNINDENT .sp Emit the profile using GCC\(aqs gcov format (Not yet supported). .UNINDENT .INDENT 0.0 .TP .B \-sparse[=true|false] Do not emit function records with 0 execution count. Can only be used in conjunction with \-instr. Defaults to false, since it can inhibit compiler optimization during PGO. .UNINDENT .INDENT 0.0 .TP .B \-num\-threads=N, \-j=N Use N threads to perform profile merging. When N=0, llvm\-profdata auto\-detects an appropriate number of threads to use. This is the default. .UNINDENT .SS EXAMPLES .SS Basic Usage .sp Merge three profiles: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C llvm\-profdata merge foo.profdata bar.profdata baz.profdata \-output merged.profdata .ft P .fi .UNINDENT .UNINDENT .SS Weighted Input .sp The input file \fIfoo.profdata\fP is especially important, multiply its counts by 10: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C llvm\-profdata merge \-weighted\-input=10,foo.profdata bar.profdata baz.profdata \-output merged.profdata .ft P .fi .UNINDENT .UNINDENT .sp Exactly equivalent to the previous invocation (explicit form; useful for programmatic invocation): .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C llvm\-profdata merge \-weighted\-input=10,foo.profdata \-weighted\-input=1,bar.profdata \-weighted\-input=1,baz.profdata \-output merged.profdata .ft P .fi .UNINDENT .UNINDENT .SH SHOW .SS SYNOPSIS .sp \fBllvm\-profdata show\fP [\fIoptions\fP] [\fIfilename\fP] .SS DESCRIPTION .sp \fBllvm\-profdata show\fP takes a profile data file and displays the information about the profile counters for this file and for any of the specified function(s). .sp If \fIfilename\fP is omitted or is \fB\-\fP, then \fBllvm\-profdata show\fP reads its input from standard input. .SS OPTIONS .INDENT 0.0 .TP .B \-all\-functions Print details for every function. .UNINDENT .INDENT 0.0 .TP .B \-counts Print the counter values for the displayed functions. .UNINDENT .INDENT 0.0 .TP .B \-function=string Print details for a function if the function\(aqs name contains the given string. .UNINDENT .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .INDENT 0.0 .TP .B \-output=output, \-o=output Specify the output file name. If \fIoutput\fP is \fB\-\fP or it isn\(aqt specified, then the output is sent to standard output. .UNINDENT .INDENT 0.0 .TP .B \-instr (default) Specify that the input profile is an instrumentation\-based profile. .UNINDENT .INDENT 0.0 .TP .B \-text Instruct the profile dumper to show profile counts in the text format of the instrumentation\-based profile data representation. By default, the profile information is dumped in a more human readable form (also in text) with annotations. .UNINDENT .INDENT 0.0 .TP .B \-topn=n Instruct the profile dumper to show the top \fBn\fP functions with the hottest basic blocks in the summary section. By default, the topn functions are not dumped. .UNINDENT .INDENT 0.0 .TP .B \-sample Specify that the input profile is a sample\-based profile. .UNINDENT .INDENT 0.0 .TP .B \-memop\-sizes Show the profiled sizes of the memory intrinsic calls for shown functions. .UNINDENT .SH EXIT STATUS .sp \fBllvm\-profdata\fP returns 1 if the command is omitted or is invalid, if it cannot read input files, or if there is a mismatch between their data. .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 (revision 337162) @@ -1,163 +1,163 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "LLVM-SYMBOLIZER" "1" "2017-12-24" "6" "LLVM" +.TH "LLVM-SYMBOLIZER" "1" "2018-08-02" "7" "LLVM" .SH NAME llvm-symbolizer \- convert addresses into source code locations . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBllvm\-symbolizer\fP [options] .SH DESCRIPTION .sp \fBllvm\-symbolizer\fP reads object file names and addresses from standard input and prints corresponding source code locations to standard output. If object file is specified in command line, \fBllvm\-symbolizer\fP processes only addresses from standard input, the rest is output verbatim. This program uses debug info sections and symbol table in the object files. .SH EXAMPLE .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C $ cat addr.txt a.out 0x4004f4 /tmp/b.out 0x400528 /tmp/c.so 0x710 /tmp/mach_universal_binary:i386 0x1f84 /tmp/mach_universal_binary:x86_64 0x100000f24 $ llvm\-symbolizer < addr.txt main /tmp/a.cc:4 f(int, int) /tmp/b.cc:11 h_inlined_into_g /tmp/header.h:2 g_inlined_into_f /tmp/header.h:7 f_inlined_into_main /tmp/source.cc:3 main /tmp/source.cc:8 _main /tmp/source_i386.cc:8 _main /tmp/source_x86_64.cc:8 $ cat addr2.txt 0x4004f4 0x401000 $ llvm\-symbolizer \-obj=a.out < addr2.txt main /tmp/a.cc:4 foo(int) /tmp/a.cc:12 $cat addr.txt 0x40054d $llvm\-symbolizer \-inlining \-print\-address \-pretty\-print \-obj=addr.exe < addr.txt 0x40054d: inc at /tmp/x.c:3:3 (inlined by) main at /tmp/x.c:9:0 $llvm\-symbolizer \-inlining \-pretty\-print \-obj=addr.exe < addr.txt inc at /tmp/x.c:3:3 (inlined by) main at /tmp/x.c:9:0 .ft P .fi .UNINDENT .UNINDENT .SH OPTIONS .INDENT 0.0 .TP .B \-obj Path to object file to be symbolized. .UNINDENT .INDENT 0.0 .TP .B \-functions=[none|short|linkage] Specify the way function names are printed (omit function name, print short function name, or print full linkage name, respectively). Defaults to \fBlinkage\fP\&. .UNINDENT .INDENT 0.0 .TP .B \-use\-symbol\-table Prefer function names stored in symbol table to function names in debug info sections. Defaults to true. .UNINDENT .INDENT 0.0 .TP .B \-demangle Print demangled function names. Defaults to true. .UNINDENT .INDENT 0.0 .TP .B \-inlining If a source code location is in an inlined function, prints all the inlnied frames. Defaults to true. .UNINDENT .INDENT 0.0 .TP .B \-default\-arch If a binary contains object files for multiple architectures (e.g. it is a Mach\-O universal binary), symbolize the object file for a given architecture. You can also specify architecture by writing \fBbinary_name:arch_name\fP in the input (see example above). If architecture is not specified in either way, address will not be symbolized. Defaults to empty string. .UNINDENT .INDENT 0.0 .TP .B \-dsym\-hint= (Darwin\-only flag). If the debug info for a binary isn\(aqt present in the default location, look for the debug info at the .dSYM path provided via the \fB\-dsym\-hint\fP flag. This flag can be used multiple times. .UNINDENT .INDENT 0.0 .TP .B \-print\-address Print address before the source code location. Defaults to false. .UNINDENT .INDENT 0.0 .TP .B \-pretty\-print Print human readable output. If \fB\-inlining\fP is specified, enclosing scope is prefixed by (inlined by). Refer to listed examples. .UNINDENT .SH EXIT STATUS .sp \fBllvm\-symbolizer\fP returns 0. Other exit codes imply internal program error. .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/llvm-tblgen/llvm-tblgen.1 =================================================================== --- projects/clang700-import/usr.bin/clang/llvm-tblgen/llvm-tblgen.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/llvm-tblgen/llvm-tblgen.1 (revision 337162) @@ -1,182 +1,193 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "TBLGEN" "1" "2016-03-03" "3.8" "LLVM" +.TH "TBLGEN" "1" "2018-08-02" "7" "LLVM" .SH NAME tblgen \- Target Description To C++ Code Generator . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBtblgen\fP [\fIoptions\fP] [\fIfilename\fP] .SH DESCRIPTION .sp \fBtblgen\fP translates from target description (\fB\&.td\fP) files into C++ code that can be included in the definition of an LLVM target library. Most users of LLVM will not need to use this program. It is only for assisting with writing an LLVM target backend. .sp The input and output of \fBtblgen\fP is beyond the scope of this short -introduction; please see the \fBintroduction to TableGen\fP\&. +introduction; please see the introduction to TableGen\&. .sp The \fIfilename\fP argument specifies the name of a Target Description (\fB\&.td\fP) file to read as input. .SH OPTIONS .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .INDENT 0.0 .TP .B \-o filename Specify the output file name. If \fBfilename\fP is \fB\-\fP, then \fBtblgen\fP sends its output to standard output. .UNINDENT .INDENT 0.0 .TP .B \-I directory Specify where to find other target description files for inclusion. The \fBdirectory\fP value should be a full or partial path to a directory that contains target description files. .UNINDENT .INDENT 0.0 .TP .B \-asmparsernum N Make \-gen\-asm\-parser emit assembly writer number \fBN\fP\&. .UNINDENT .INDENT 0.0 .TP .B \-asmwriternum N Make \-gen\-asm\-writer emit assembly writer number \fBN\fP\&. .UNINDENT .INDENT 0.0 .TP .B \-class className Print the enumeration list for this class. .UNINDENT .INDENT 0.0 .TP .B \-print\-records Print all records to standard output (default). .UNINDENT .INDENT 0.0 .TP +.B \-dump\-json +Print a JSON representation of all records, suitable for further +automated processing. +.UNINDENT +.INDENT 0.0 +.TP .B \-print\-enums Print enumeration values for a class. .UNINDENT .INDENT 0.0 .TP .B \-print\-sets Print expanded sets for testing DAG exprs. .UNINDENT .INDENT 0.0 .TP .B \-gen\-emitter Generate machine code emitter. .UNINDENT .INDENT 0.0 .TP .B \-gen\-register\-info Generate registers and register classes info. .UNINDENT .INDENT 0.0 .TP .B \-gen\-instr\-info Generate instruction descriptions. .UNINDENT .INDENT 0.0 .TP .B \-gen\-asm\-writer Generate the assembly writer. .UNINDENT .INDENT 0.0 .TP .B \-gen\-disassembler Generate disassembler. .UNINDENT .INDENT 0.0 .TP .B \-gen\-pseudo\-lowering Generate pseudo instruction lowering. .UNINDENT .INDENT 0.0 .TP .B \-gen\-dag\-isel Generate a DAG (Directed Acycle Graph) instruction selector. .UNINDENT .INDENT 0.0 .TP .B \-gen\-asm\-matcher Generate assembly instruction matcher. .UNINDENT .INDENT 0.0 .TP .B \-gen\-dfa\-packetizer Generate DFA Packetizer for VLIW targets. .UNINDENT .INDENT 0.0 .TP .B \-gen\-fast\-isel Generate a "fast" instruction selector. .UNINDENT .INDENT 0.0 .TP .B \-gen\-subtarget Generate subtarget enumerations. .UNINDENT .INDENT 0.0 .TP -.B \-gen\-intrinsic -Generate intrinsic information. +.B \-gen\-intrinsic\-enums +Generate intrinsic enums. .UNINDENT .INDENT 0.0 .TP +.B \-gen\-intrinsic\-impl +Generate intrinsic implementation. +.UNINDENT +.INDENT 0.0 +.TP .B \-gen\-tgt\-intrinsic Generate target intrinsic information. .UNINDENT .INDENT 0.0 .TP .B \-gen\-enhanced\-disassembly\-info Generate enhanced disassembly info. .UNINDENT .INDENT 0.0 .TP .B \-version Show the version number of this program. .UNINDENT .SH EXIT STATUS .sp If \fBtblgen\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2016, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. . Index: projects/clang700-import/usr.bin/clang/opt/opt.1 =================================================================== --- projects/clang700-import/usr.bin/clang/opt/opt.1 (revision 337161) +++ projects/clang700-import/usr.bin/clang/opt/opt.1 (revision 337162) @@ -1,170 +1,170 @@ .\" $FreeBSD$ .\" Man page generated from reStructuredText. . -.TH "OPT" "1" "2017-12-24" "6" "LLVM" +.TH "OPT" "1" "2018-08-02" "7" "LLVM" .SH NAME opt \- LLVM optimizer . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBopt\fP [\fIoptions\fP] [\fIfilename\fP] .SH DESCRIPTION .sp The \fBopt\fP command is the modular LLVM optimizer and analyzer. It takes LLVM source files as input, runs the specified optimizations or analyses on it, and then outputs the optimized file or the analysis results. The function of \fBopt\fP depends on whether the \fI\-analyze\fP option is given. .sp When \fI\-analyze\fP is specified, \fBopt\fP performs various analyses of the input source. It will usually print the results on standard output, but in a few cases, it will print output to standard error or generate a file with the analysis output, which is usually done when the output is meant for another program. .sp While \fI\-analyze\fP is \fInot\fP given, \fBopt\fP attempts to produce an optimized output file. The optimizations available via \fBopt\fP depend upon what libraries were linked into it as well as any additional libraries that have been loaded with the \fI\%\-load\fP option. Use the \fI\%\-help\fP option to determine what optimizations you can use. .sp If \fBfilename\fP is omitted from the command line or is "\fB\-\fP", \fBopt\fP reads its input from standard input. Inputs can be in either the LLVM assembly language format (\fB\&.ll\fP) or the LLVM bitcode format (\fB\&.bc\fP). .sp If an output filename is not specified with the \fI\%\-o\fP option, \fBopt\fP writes its output to the standard output. .SH OPTIONS .INDENT 0.0 .TP .B \-f Enable binary output on terminals. Normally, \fBopt\fP will refuse to write raw bitcode output if the output stream is a terminal. With this option, \fBopt\fP will write raw bitcode regardless of the output device. .UNINDENT .INDENT 0.0 .TP .B \-help Print a summary of command line options. .UNINDENT .INDENT 0.0 .TP .B \-o Specify the output filename. .UNINDENT .INDENT 0.0 .TP .B \-S Write output in LLVM intermediate language (instead of bitcode). .UNINDENT .INDENT 0.0 .TP .B \-{passname} \fBopt\fP provides the ability to run any of LLVM\(aqs optimization or analysis passes in any order. The \fI\%\-help\fP option lists all the passes available. The order in which the options occur on the command line are the order in which they are executed (within pass constraints). .UNINDENT .INDENT 0.0 .TP .B \-disable\-inlining This option simply removes the inlining pass from the standard list. .UNINDENT .INDENT 0.0 .TP .B \-disable\-opt This option is only meaningful when \fI\-std\-link\-opts\fP is given. It disables most passes. .UNINDENT .INDENT 0.0 .TP .B \-strip\-debug This option causes opt to strip debug information from the module before applying other optimizations. It is essentially the same as \fI\-strip\fP but it ensures that stripping of debug information is done first. .UNINDENT .INDENT 0.0 .TP .B \-verify\-each This option causes opt to add a verify pass after every pass otherwise specified on the command line (including \fI\-verify\fP). This is useful for cases where it is suspected that a pass is creating an invalid module but it is not clear which pass is doing it. .UNINDENT .INDENT 0.0 .TP .B \-stats Print statistics. .UNINDENT .INDENT 0.0 .TP .B \-time\-passes Record the amount of time needed for each pass and print it to standard error. .UNINDENT .INDENT 0.0 .TP .B \-debug If this is a debug build, this option will enable debug printouts from passes -which use the \fBDEBUG()\fP macro. See the \fI\%LLVM Programmer\(aqs Manual\fP, section \fB#DEBUG\fP for more information. +which use the \fBLLVM_DEBUG()\fP macro. See the \fI\%LLVM Programmer\(aqs Manual\fP, section \fB#DEBUG\fP for more information. .UNINDENT .INDENT 0.0 .TP .B \-load= Load the dynamic object \fBplugin\fP\&. This object should register new optimization or analysis passes. Once loaded, the object will add new command line options to enable various optimizations or analyses. To see the new complete list of optimizations, use the \fI\%\-help\fP and \fI\%\-load\fP options together. For example: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C opt \-load=plugin.so \-help .ft P .fi .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-p Print module after each transformation. .UNINDENT .SH EXIT STATUS .sp If \fBopt\fP succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non\-zero value. .SH AUTHOR Maintained by The LLVM Team (http://llvm.org/). .SH COPYRIGHT -2003-2017, LLVM Project +2003-2018, LLVM Project .\" Generated by docutils manpage writer. .