diff options
Diffstat (limited to 'usr.bin/clang')
89 files changed, 5592 insertions, 0 deletions
diff --git a/usr.bin/clang/Makefile b/usr.bin/clang/Makefile new file mode 100644 index 000000000000..746d062e57aa --- /dev/null +++ b/usr.bin/clang/Makefile @@ -0,0 +1,51 @@ +# $FreeBSD$ + +.include <src.opts.mk> + +SUBDIR+= clang +SUBDIR+= clang-tblgen +SUBDIR+= llvm-tblgen + +.if !defined(TOOLS_PREFIX) +SUBDIR+= llvm-objdump + +.if ${MK_CLANG_EXTRAS} != "no" +SUBDIR+= bugpoint +SUBDIR+= clang-format +SUBDIR+= llc +SUBDIR+= lli +SUBDIR+= llvm-ar +SUBDIR+= llvm-as +SUBDIR+= llvm-bcanalyzer +SUBDIR+= llvm-cov +SUBDIR+= llvm-cxxdump +SUBDIR+= llvm-cxxfilt +SUBDIR+= llvm-diff +SUBDIR+= llvm-dis +SUBDIR+= llvm-dwarfdump +SUBDIR+= llvm-extract +SUBDIR+= llvm-link +SUBDIR+= llvm-lto +SUBDIR+= llvm-lto2 +SUBDIR+= llvm-mc +SUBDIR+= llvm-modextract +SUBDIR+= llvm-nm +SUBDIR+= llvm-pdbdump +SUBDIR+= llvm-profdata +SUBDIR+= llvm-rtdyld +SUBDIR+= llvm-symbolizer +SUBDIR+= llvm-xray +SUBDIR+= opt +.endif + +.if ${MK_LLD} != "no" +SUBDIR+= lld +.endif +.if ${MK_LLDB} != "no" +SUBDIR+= lldb +.endif # MK_LLDB +.endif # TOOLS_PREFIX + +SUBDIR_PARALLEL= + +.include <bsd.subdir.mk> diff --git a/usr.bin/clang/Makefile.inc b/usr.bin/clang/Makefile.inc new file mode 100644 index 000000000000..f8eb829fbe8c --- /dev/null +++ b/usr.bin/clang/Makefile.inc @@ -0,0 +1,5 @@ +# $FreeBSD$ + +WARNS?= 0 + +.include "../Makefile.inc" diff --git a/usr.bin/clang/bugpoint/Makefile b/usr.bin/clang/bugpoint/Makefile new file mode 100644 index 000000000000..2f0cb9eb417f --- /dev/null +++ b/usr.bin/clang/bugpoint/Makefile @@ -0,0 +1,18 @@ +# $FreeBSD$ + +PROG_CXX= bugpoint + +SRCDIR= tools/bugpoint +SRCS+= BugDriver.cpp +SRCS+= CrashDebugger.cpp +SRCS+= ExecutionDriver.cpp +SRCS+= ExtractFunction.cpp +SRCS+= FindBugs.cpp +SRCS+= Miscompilation.cpp +SRCS+= OptimizerDriver.cpp +SRCS+= ToolRunner.cpp +SRCS+= bugpoint.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/bugpoint/Makefile.depend b/usr.bin/clang/bugpoint/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/bugpoint/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/bugpoint/bugpoint.1 b/usr.bin/clang/bugpoint/bugpoint.1 new file mode 100644 index 000000000000..36b0aed1723b --- /dev/null +++ b/usr.bin/clang/bugpoint/bugpoint.1 @@ -0,0 +1,293 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "BUGPOINT" "1" "2016-03-03" "3.8" "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 \fIllvm/docs/Bugpoint.html\fP 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. 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 +.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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/clang-format/Makefile b/usr.bin/clang/clang-format/Makefile new file mode 100644 index 000000000000..ddcc89ab497d --- /dev/null +++ b/usr.bin/clang/clang-format/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +PROG_CXX= clang-format +MAN= + +SRCDIR= tools/clang/tools/clang-format +SRCS+= ClangFormat.cpp + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/clang-format/Makefile.depend b/usr.bin/clang/clang-format/Makefile.depend new file mode 100644 index 000000000000..7a822fac93b9 --- /dev/null +++ b/usr.bin/clang/clang-format/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libclang \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/clang-tblgen/Makefile b/usr.bin/clang/clang-tblgen/Makefile new file mode 100644 index 000000000000..b341aa22b7f4 --- /dev/null +++ b/usr.bin/clang/clang-tblgen/Makefile @@ -0,0 +1,18 @@ +# $FreeBSD$ + +PROG_CXX= clang-tblgen +MAN= + +SRCDIR= tools/clang/utils/TableGen +SRCS+= ClangASTNodesEmitter.cpp +SRCS+= ClangAttrEmitter.cpp +SRCS+= ClangCommentCommandInfoEmitter.cpp +SRCS+= ClangCommentHTMLNamedCharacterReferenceEmitter.cpp +SRCS+= ClangCommentHTMLTagsEmitter.cpp +SRCS+= ClangDiagnosticsEmitter.cpp +SRCS+= ClangOptionDocEmitter.cpp +SRCS+= ClangSACheckersEmitter.cpp +SRCS+= NeonEmitter.cpp +SRCS+= TableGen.cpp + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/clang-tblgen/Makefile.depend b/usr.bin/clang/clang-tblgen/Makefile.depend new file mode 100644 index 000000000000..9f12128ea718 --- /dev/null +++ b/usr.bin/clang/clang-tblgen/Makefile.depend @@ -0,0 +1,24 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/clang-tblgen/Makefile.depend.host b/usr.bin/clang/clang-tblgen/Makefile.depend.host new file mode 100644 index 000000000000..fc72483f0f06 --- /dev/null +++ b/usr.bin/clang/clang-tblgen/Makefile.depend.host @@ -0,0 +1,12 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + lib/clang/libllvmminimal \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/clang.prog.mk b/usr.bin/clang/clang.prog.mk new file mode 100644 index 000000000000..0ceb9e8ece6f --- /dev/null +++ b/usr.bin/clang/clang.prog.mk @@ -0,0 +1,23 @@ +# $FreeBSD$ + +.include "${SRCTOP}/lib/clang/clang.pre.mk" + +CFLAGS+= -I${OBJTOP}/lib/clang/libclang +CFLAGS+= -I${OBJTOP}/lib/clang/libllvm + +.include "${SRCTOP}/lib/clang/clang.build.mk" + +LIBDEPS+= clang +LIBDEPS+= llvm + +.for lib in ${LIBDEPS} +DPADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +LDADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +.endfor + +PACKAGE= clang + +LIBADD+= ncursesw +LIBADD+= pthread + +.include <bsd.prog.mk> diff --git a/usr.bin/clang/clang/CC.sh b/usr.bin/clang/clang/CC.sh new file mode 100755 index 000000000000..45faeec0ec45 --- /dev/null +++ b/usr.bin/clang/clang/CC.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# $FreeBSD$ +# This file is in the public domain. +exec /usr/bin/c++ "$@" diff --git a/usr.bin/clang/clang/Makefile b/usr.bin/clang/clang/Makefile new file mode 100644 index 000000000000..b32f6649cb19 --- /dev/null +++ b/usr.bin/clang/clang/Makefile @@ -0,0 +1,39 @@ +# $FreeBSD$ + +.include <src.opts.mk> + +PROG_CXX= clang + +SRCDIR= tools/clang/tools/driver +SRCS+= cc1_main.cpp +SRCS+= cc1as_main.cpp +SRCS+= driver.cpp + +.if ${MK_SHARED_TOOLCHAIN} == "no" +NO_SHARED?= yes + +.if ${MACHINE_CPUARCH} == "arm" +CFLAGS+= -mlong-calls +.endif +.endif + +LINKS= ${BINDIR}/clang ${BINDIR}/clang++ \ + ${BINDIR}/clang ${BINDIR}/clang-cpp +MLINKS= clang.1 clang++.1 \ + clang.1 clang-cpp.1 +.if ${MK_CLANG_IS_CC} != "no" +SCRIPTS=CC.sh +SCRIPTSNAME=CC + +LINKS+= ${BINDIR}/clang ${BINDIR}/cc \ + ${BINDIR}/clang ${BINDIR}/c++ \ + ${BINDIR}/clang ${BINDIR}/cpp +MLINKS+= clang.1 cc.1 \ + clang.1 c++.1 \ + clang.1 CC.1 \ + clang.1 cpp.1 +.endif + +LIBADD+= z + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/clang/Makefile.depend b/usr.bin/clang/clang/Makefile.depend new file mode 100644 index 000000000000..4d1a1657e1b6 --- /dev/null +++ b/usr.bin/clang/clang/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libclang \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/clang/clang.1 b/usr.bin/clang/clang/clang.1 new file mode 100644 index 000000000000..5fcc9ac7c20b --- /dev/null +++ b/usr.bin/clang/clang/clang.1 @@ -0,0 +1,584 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "CLANG" "1" "March 04, 2016" "3.8" "Clang" +.SH NAME +clang \- the Clang C, C++, and Objective-C 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 +\fBclang\fP [\fIoptions\fP] \fIfilename ...\fP +.SH DESCRIPTION +.sp +\fBclang\fP is a C, C++, and Objective\-C compiler which encompasses +preprocessing, parsing, optimization, code generation, assembly, and linking. +Depending on which high\-level mode setting is passed, Clang will stop before +doing a full link. While Clang is highly integrated, it is important to +understand the stages of compilation, to understand how to invoke it. These +stages are: +.INDENT 0.0 +.TP +.B Driver +The clang executable is actually a small driver which controls the overall +execution of other tools such as the compiler, assembler and linker. +Typically you do not need to interact with the driver, but you +transparently use it to run the other tools. +.TP +.B Preprocessing +This stage handles tokenization of the input source file, macro expansion, +#include expansion and handling of other preprocessor directives. The +output of this stage is typically called a ".i" (for C), ".ii" (for C++), +".mi" (for Objective\-C), or ".mii" (for Objective\-C++) file. +.TP +.B Parsing and Semantic Analysis +This stage parses the input file, translating preprocessor tokens into a +parse tree. Once in the form of a parse tree, it applies semantic +analysis to compute types for expressions as well and determine whether +the code is well formed. This stage is responsible for generating most of +the compiler warnings as well as parse errors. The output of this stage is +an "Abstract Syntax Tree" (AST). +.TP +.B Code Generation and Optimization +This stage translates an AST into low\-level intermediate code (known as +"LLVM IR") and ultimately to machine code. This phase is responsible for +optimizing the generated code and handling target\-specific code generation. +The output of this stage is typically called a ".s" file or "assembly" file. +.sp +Clang also supports the use of an integrated assembler, in which the code +generator produces object files directly. This avoids the overhead of +generating the ".s" file and of calling the target assembler. +.TP +.B Assembler +This stage runs the target assembler to translate the output of the +compiler into a target object file. The output of this stage is typically +called a ".o" file or "object" file. +.TP +.B Linker +This stage runs the target linker to merge multiple object files into an +executable or dynamic library. The output of this stage is typically called +an "a.out", ".dylib" or ".so" file. +.UNINDENT +.sp +\fBClang Static Analyzer\fP +.sp +The Clang Static Analyzer is a tool that scans source code to try to find bugs +through code analysis. This tool uses many parts of Clang and is built into +the same driver. Please see <\fI\%http://clang\-analyzer.llvm.org\fP> for more details +on how to use the static analyzer. +.SH OPTIONS +.SS Stage Selection Options +.INDENT 0.0 +.TP +.B \-E +Run the preprocessor stage. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fsyntax\-only +Run the preprocessor, parser and type checking stages. +.UNINDENT +.INDENT 0.0 +.TP +.B \-S +Run the previous stages as well as LLVM generation and optimization stages +and target\-specific code generation, producing an assembly file. +.UNINDENT +.INDENT 0.0 +.TP +.B \-c +Run all of the above, plus the assembler, generating a target ".o" object file. +.UNINDENT +.INDENT 0.0 +.TP +.B no stage selection option +If no stage selection option is specified, all stages above are run, and the +linker is run to combine the results into an executable or shared library. +.UNINDENT +.SS Language Selection and Mode Options +.INDENT 0.0 +.TP +.B \-x <language> +Treat subsequent input files as having type language. +.UNINDENT +.INDENT 0.0 +.TP +.B \-std=<language> +Specify the language standard to compile for. +.UNINDENT +.INDENT 0.0 +.TP +.B \-stdlib=<library> +Specify the C++ standard library to use; supported options are libstdc++ and +libc++. +.UNINDENT +.INDENT 0.0 +.TP +.B \-ansi +Same as \-std=c89. +.UNINDENT +.INDENT 0.0 +.TP +.B \-ObjC, \-ObjC++ +Treat source input files as Objective\-C and Object\-C++ inputs respectively. +.UNINDENT +.INDENT 0.0 +.TP +.B \-trigraphs +Enable trigraphs. +.UNINDENT +.INDENT 0.0 +.TP +.B \-ffreestanding +Indicate that the file should be compiled for a freestanding, not a hosted, +environment. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fno\-builtin +Disable special handling and optimizations of builtin functions like +\fBstrlen()\fP and \fBmalloc()\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fmath\-errno +Indicate that math functions should be treated as updating \fBerrno\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fpascal\-strings +Enable support for Pascal\-style strings with "\epfoo". +.UNINDENT +.INDENT 0.0 +.TP +.B \-fms\-extensions +Enable support for Microsoft extensions. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fmsc\-version= +Set _MSC_VER. Defaults to 1300 on Windows. Not set otherwise. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fborland\-extensions +Enable support for Borland extensions. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fwritable\-strings +Make all string literals default to writable. This disables uniquing of +strings and other optimizations. +.UNINDENT +.INDENT 0.0 +.TP +.B \-flax\-vector\-conversions +Allow loose type checking rules for implicit vector conversions. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fblocks +Enable the "Blocks" language feature. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fobjc\-gc\-only +Indicate that Objective\-C code should be compiled in GC\-only mode, which only +works when Objective\-C Garbage Collection is enabled. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fobjc\-gc +Indicate that Objective\-C code should be compiled in hybrid\-GC mode, which +works with both GC and non\-GC mode. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fobjc\-abi\-version=version +Select the Objective\-C ABI version to use. Available versions are 1 (legacy +"fragile" ABI), 2 (non\-fragile ABI 1), and 3 (non\-fragile ABI 2). +.UNINDENT +.INDENT 0.0 +.TP +.B \-fobjc\-nonfragile\-abi\-version=<version> +Select the Objective\-C non\-fragile ABI version to use by default. This will +only be used as the Objective\-C ABI when the non\-fragile ABI is enabled +(either via \fI\%\-fobjc\-nonfragile\-abi\fP, or because it is the platform +default). +.UNINDENT +.INDENT 0.0 +.TP +.B \-fobjc\-nonfragile\-abi +Enable use of the Objective\-C non\-fragile ABI. On platforms for which this is +the default ABI, it can be disabled with \fB\-fno\-objc\-nonfragile\-abi\fP\&. +.UNINDENT +.SS Target Selection Options +.sp +Clang fully supports cross compilation as an inherent part of its design. +Depending on how your version of Clang is configured, it may have support for a +number of cross compilers, or may only support a native target. +.INDENT 0.0 +.TP +.B \-arch <architecture> +Specify the architecture to build for. +.UNINDENT +.INDENT 0.0 +.TP +.B \-mmacosx\-version\-min=<version> +When building for Mac OS X, specify the minimum version supported by your +application. +.UNINDENT +.INDENT 0.0 +.TP +.B \-miphoneos\-version\-min +When building for iPhone OS, specify the minimum version supported by your +application. +.UNINDENT +.INDENT 0.0 +.TP +.B \-march=<cpu> +Specify that Clang should generate code for a specific processor family +member and later. For example, if you specify \-march=i486, the compiler is +allowed to generate instructions that are valid on i486 and later processors, +but which may not exist on earlier ones. +.UNINDENT +.SS Code Generation Options +.INDENT 0.0 +.TP +.B \-O0, \-O1, \-O2, \-O3, \-Ofast, \-Os, \-Oz, \-O, \-O4 +Specify which optimization level to use: +.INDENT 7.0 +.INDENT 3.5 +\fI\%\-O0\fP Means "no optimization": this level compiles the fastest and +generates the most debuggable code. +.sp +\fI\%\-O1\fP Somewhere between \fI\%\-O0\fP and \fI\%\-O2\fP\&. +.sp +\fI\%\-O2\fP Moderate level of optimization which enables most +optimizations. +.sp +\fI\%\-O3\fP Like \fI\%\-O2\fP, except that it enables optimizations that +take longer to perform or that may generate larger code (in an attempt to +make the program run faster). +.sp +\fI\%\-Ofast\fP Enables all the optimizations from \fI\%\-O3\fP along +with other aggressive optimizations that may violate strict compliance with +language standards. +.sp +\fI\%\-Os\fP Like \fI\%\-O2\fP with extra optimizations to reduce code +size. +.sp +\fI\%\-Oz\fP Like \fI\%\-Os\fP (and thus \fI\%\-O2\fP), but reduces code +size further. +.sp +\fI\%\-O\fP Equivalent to \fI\%\-O2\fP\&. +.sp +\fI\%\-O4\fP and higher +.INDENT 0.0 +.INDENT 3.5 +Currently equivalent to \fI\%\-O3\fP +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B \-g +Generate debug information. Note that Clang debug information works best at \-O0. +.UNINDENT +.INDENT 0.0 +.TP +.B \-gmodules +Generate debug information that contains external references to +types defined in clang modules or precompiled headers instead of +emitting redundant debug type information into every object file. +This option implies \fB\-fmodule\-format=obj\fP\&. +.sp +This option should not be used when building static libraries for +distribution to other machines because the debug info will contain +references to the module cache on the machine the object files in +the library were built on. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fstandalone\-debug \-fno\-standalone\-debug +Clang supports a number of optimizations to reduce the size of debug +information in the binary. They work based on the assumption that the +debug type information can be spread out over multiple compilation units. +For instance, Clang will not emit type definitions for types that are not +needed by a module and could be replaced with a forward declaration. +Further, Clang will only emit type info for a dynamic C++ class in the +module that contains the vtable for the class. +.sp +The \fB\-fstandalone\-debug\fP option turns off these optimizations. +This is useful when working with 3rd\-party libraries that don\(aqt come with +debug information. This is the default on Darwin. Note that Clang will +never emit type information for types that are not referenced at all by the +program. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fexceptions +Enable generation of unwind information. This allows exceptions to be thrown +through Clang compiled stack frames. This is on by default in x86\-64. +.UNINDENT +.INDENT 0.0 +.TP +.B \-ftrapv +Generate code to catch integer overflow errors. Signed integer overflow is +undefined in C. With this flag, extra code is generated to detect this and +abort when it happens. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fvisibility +This flag sets the default visibility level. +.UNINDENT +.INDENT 0.0 +.TP +.B \-fcommon +This flag specifies that variables without initializers get common linkage. +It can be disabled with \fB\-fno\-common\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-ftls\-model=<model> +Set the default thread\-local storage (TLS) model to use for thread\-local +variables. Valid values are: "global\-dynamic", "local\-dynamic", +"initial\-exec" and "local\-exec". The default is "global\-dynamic". The default +model can be overridden with the tls_model attribute. The compiler will try +to choose a more efficient model if possible. +.UNINDENT +.INDENT 0.0 +.TP +.B \-flto, \-emit\-llvm +Generate output files in LLVM formats, suitable for link time optimization. +When used with \fI\%\-S\fP this generates LLVM intermediate language +assembly files, otherwise this generates LLVM bitcode format object files +(which may be passed to the linker depending on the stage selection options). +.UNINDENT +.SS Driver Options +.INDENT 0.0 +.TP +.B \-### +Print (but do not run) the commands to run for this compilation. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-help +Display available options. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Qunused\-arguments +Do not emit any warnings for unused driver arguments. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Wa,<args> +Pass the comma separated arguments in args to the assembler. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Wl,<args> +Pass the comma separated arguments in args to the linker. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Wp,<args> +Pass the comma separated arguments in args to the preprocessor. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Xanalyzer <arg> +Pass arg to the static analyzer. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Xassembler <arg> +Pass arg to the assembler. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Xlinker <arg> +Pass arg to the linker. +.UNINDENT +.INDENT 0.0 +.TP +.B \-Xpreprocessor <arg> +Pass arg to the preprocessor. +.UNINDENT +.INDENT 0.0 +.TP +.B \-o <file> +Write output to file. +.UNINDENT +.INDENT 0.0 +.TP +.B \-print\-file\-name=<file> +Print the full library path of file. +.UNINDENT +.INDENT 0.0 +.TP +.B \-print\-libgcc\-file\-name +Print the library path for "libgcc.a". +.UNINDENT +.INDENT 0.0 +.TP +.B \-print\-prog\-name=<name> +Print the full program path of name. +.UNINDENT +.INDENT 0.0 +.TP +.B \-print\-search\-dirs +Print the paths used for finding libraries and programs. +.UNINDENT +.INDENT 0.0 +.TP +.B \-save\-temps +Save intermediate compilation results. +.UNINDENT +.INDENT 0.0 +.TP +.B \-integrated\-as, \-no\-integrated\-as +Used to enable and disable, respectively, the use of the integrated +assembler. Whether the integrated assembler is on by default is target +dependent. +.UNINDENT +.INDENT 0.0 +.TP +.B \-time +Time individual commands. +.UNINDENT +.INDENT 0.0 +.TP +.B \-ftime\-report +Print timing summary of each stage of compilation. +.UNINDENT +.INDENT 0.0 +.TP +.B \-v +Show commands to run and use verbose output. +.UNINDENT +.SS Diagnostics Options +.INDENT 0.0 +.TP +.B \-fshow\-column, \-fshow\-source\-location, \-fcaret\-diagnostics, \-fdiagnostics\-fixit\-info, \-fdiagnostics\-parseable\-fixits, \-fdiagnostics\-print\-source\-range\-info, \-fprint\-source\-range\-info, \-fdiagnostics\-show\-option, \-fmessage\-length +These options control how Clang prints out information about diagnostics +(errors and warnings). Please see the Clang User\(aqs Manual for more information. +.UNINDENT +.SS Preprocessor Options +.INDENT 0.0 +.TP +.B \-D<macroname>=<value> +Adds an implicit #define into the predefines buffer which is read before the +source file is preprocessed. +.UNINDENT +.INDENT 0.0 +.TP +.B \-U<macroname> +Adds an implicit #undef into the predefines buffer which is read before the +source file is preprocessed. +.UNINDENT +.INDENT 0.0 +.TP +.B \-include <filename> +Adds an implicit #include into the predefines buffer which is read before the +source file is preprocessed. +.UNINDENT +.INDENT 0.0 +.TP +.B \-I<directory> +Add the specified directory to the search path for include files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-F<directory> +Add the specified directory to the search path for framework include files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-nostdinc +Do not search the standard system directories or compiler builtin directories +for include files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-nostdlibinc +Do not search the standard system directories for include files, but do +search compiler builtin include directories. +.UNINDENT +.INDENT 0.0 +.TP +.B \-nobuiltininc +Do not search clang\(aqs builtin directory for include files. +.UNINDENT +.SH ENVIRONMENT +.INDENT 0.0 +.TP +.B TMPDIR, TEMP, TMP +These environment variables are checked, in order, for the location to write +temporary files used during the compilation process. +.UNINDENT +.INDENT 0.0 +.TP +.B CPATH +If this environment variable is present, it is treated as a delimited list of +paths to be added to the default system include path list. The delimiter is +the platform dependent delimiter, as used in the PATH environment variable. +.sp +Empty components in the environment variable are ignored. +.UNINDENT +.INDENT 0.0 +.TP +.B C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH +These environment variables specify additional paths, as for \fI\%CPATH\fP, which are +only used when processing the appropriate language. +.UNINDENT +.INDENT 0.0 +.TP +.B MACOSX_DEPLOYMENT_TARGET +If \fI\%\-mmacosx\-version\-min\fP is unspecified, the default deployment +target is read from this environment variable. This option only affects +Darwin targets. +.UNINDENT +.SH BUGS +.sp +To report bugs, please visit <\fI\%http://llvm.org/bugs/\fP>. Most bug reports should +include preprocessed source files (use the \fI\%\-E\fP option) and the full +output of the compiler, along with information to reproduce. +.SH SEE ALSO +.sp +\fIas(1)\fP, \fIld(1)\fP +.SH AUTHOR +Maintained by the Clang / LLVM Team (<http://clang.llvm.org>) +.SH COPYRIGHT +2007-2016, The Clang Team +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llc/Makefile b/usr.bin/clang/llc/Makefile new file mode 100644 index 000000000000..0855f3b0ee25 --- /dev/null +++ b/usr.bin/clang/llc/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llc + +SRCDIR= tools/llc +SRCS+= llc.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llc/Makefile.depend b/usr.bin/clang/llc/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llc/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llc/llc.1 b/usr.bin/clang/llc/llc.1 new file mode 100644 index 000000000000..1ec01b7636cf --- /dev/null +++ b/usr.bin/clang/llc/llc.1 @@ -0,0 +1,265 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLC" "1" "2016-03-03" "3.8" "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=<target triple> +Override the target triple specified in the input file with the specified +string. +.UNINDENT +.INDENT 0.0 +.TP +.B \-march=<arch> +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=<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: +.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=<output file type> +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=<dso_path> +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 +.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=<allocator> +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=<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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/lld/Makefile b/usr.bin/clang/lld/Makefile new file mode 100644 index 000000000000..901992381437 --- /dev/null +++ b/usr.bin/clang/lld/Makefile @@ -0,0 +1,81 @@ +# $FreeBSD$ + +.include <src.opts.mk> + +LLVM_SRCS= ${SRCTOP}/contrib/llvm +LLD_SRCS= ${LLVM_SRCS}/tools/lld + +PACKAGE= lld +PROG_CXX= ld.lld +MAN= +.if ${MK_LLD_IS_LD} != "no" +SYMLINKS= ${PROG_CXX} ${BINDIR}/ld +.endif + +CFLAGS+= -I${LLD_SRCS}/include +CFLAGS+= -I${.OBJDIR} +CFLAGS+= -I${OBJTOP}/lib/clang/libllvm + +SRCDIR= tools/lld +SRCS+= ELF/Driver.cpp +SRCS+= ELF/DriverUtils.cpp +SRCS+= ELF/EhFrame.cpp +SRCS+= ELF/Error.cpp +SRCS+= ELF/Filesystem.cpp +SRCS+= ELF/GdbIndex.cpp +SRCS+= ELF/ICF.cpp +SRCS+= ELF/InputFiles.cpp +SRCS+= ELF/InputSection.cpp +SRCS+= ELF/LTO.cpp +SRCS+= ELF/LinkerScript.cpp +SRCS+= ELF/MapFile.cpp +SRCS+= ELF/MarkLive.cpp +SRCS+= ELF/Mips.cpp +SRCS+= ELF/OutputSections.cpp +SRCS+= ELF/Relocations.cpp +SRCS+= ELF/ScriptLexer.cpp +SRCS+= ELF/ScriptParser.cpp +SRCS+= ELF/Strings.cpp +SRCS+= ELF/SymbolTable.cpp +SRCS+= ELF/Symbols.cpp +SRCS+= ELF/SyntheticSections.cpp +SRCS+= ELF/Target.cpp +SRCS+= ELF/Thunks.cpp +SRCS+= ELF/Writer.cpp +SRCS+= lib/Config/Version.cpp +SRCS+= lib/Core/Error.cpp +SRCS+= lib/Core/File.cpp +SRCS+= lib/Core/LinkingContext.cpp +SRCS+= lib/Core/Reader.cpp +SRCS+= lib/Core/Reproduce.cpp +SRCS+= lib/Core/Resolver.cpp +SRCS+= lib/Core/SymbolTable.cpp +SRCS+= lib/Core/TargetOptionsCommandFlags.cpp +SRCS+= lib/Core/TaskGroup.cpp +SRCS+= tools/lld/lld.cpp + +.include "${SRCTOP}/lib/clang/llvm.build.mk" + +LIBDEPS+= llvm + +.for lib in ${LIBDEPS} +DPADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +LDADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +.endfor + +LLVM_TBLGEN?= llvm-tblgen +ELF/Options.inc: ${LLD_SRCS}/ELF/Options.td + ${LLVM_TBLGEN} -gen-opt-parser-defs \ + -I ${LLVM_SRCS}/include \ + -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ + ${LLVM_SRCS}/tools/lld/ELF/Options.td +TGHDRS+= ELF/Options.inc + +DPSRCS+= ${TGHDRS} +CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/} + +LIBADD+= ncursesw +LIBADD+= pthread +LIBADD+= z + +.include <bsd.prog.mk> diff --git a/usr.bin/clang/lld/Makefile.depend b/usr.bin/clang/lld/Makefile.depend new file mode 100644 index 000000000000..b47c72f6636f --- /dev/null +++ b/usr.bin/clang/lld/Makefile.depend @@ -0,0 +1,26 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + usr.bin/clang/llvm-tblgen.host \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/lldb/Makefile b/usr.bin/clang/lldb/Makefile new file mode 100644 index 000000000000..1bbbb530726e --- /dev/null +++ b/usr.bin/clang/lldb/Makefile @@ -0,0 +1,32 @@ +# $FreeBSD$ + +.include "${SRCTOP}/lib/clang/lldb.pre.mk" + +PACKAGE= lldb +PROG_CXX= lldb +# Man page directory +.PATH: ${LLDB_SRCS}/docs + +CFLAGS+= -I${LLDB_SRCS}/include + +SRCDIR= tools/lldb/tools/driver +SRCS+= Driver.cpp + +.include "${SRCTOP}/lib/clang/clang.build.mk" + +LIBDEPS+= lldb +LIBDEPS+= clang +LIBDEPS+= llvm + +.for lib in ${LIBDEPS} +DPADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +LDADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +.endfor + +LIBADD+= edit +LIBADD+= panel +LIBADD+= ncursesw +LIBADD+= pthread +LIBADD+= z + +.include <bsd.prog.mk> diff --git a/usr.bin/clang/lldb/Makefile.depend b/usr.bin/clang/lldb/Makefile.depend new file mode 100644 index 000000000000..162877523067 --- /dev/null +++ b/usr.bin/clang/lldb/Makefile.depend @@ -0,0 +1,30 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libclang \ + lib/clang/liblldb \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libedit \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncurses \ + lib/ncurses/ncursesw \ + lib/ncurses/panel \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/lli/Makefile b/usr.bin/clang/lli/Makefile new file mode 100644 index 000000000000..ebe7a008279c --- /dev/null +++ b/usr.bin/clang/lli/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +PROG_CXX= lli + +SRCDIR= tools/lli +SRCS+= OrcLazyJIT.cpp +SRCS+= lli.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/lli/Makefile.depend b/usr.bin/clang/lli/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/lli/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/lli/lli.1 b/usr.bin/clang/lli/lli.1 new file mode 100644 index 000000000000..7b805f71c3ff --- /dev/null +++ b/usr.bin/clang/lli/lli.1 @@ -0,0 +1,298 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLI" "1" "2016-03-03" "3.8" "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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-ar/Makefile b/usr.bin/clang/llvm-ar/Makefile new file mode 100644 index 000000000000..f6116ecefcc4 --- /dev/null +++ b/usr.bin/clang/llvm-ar/Makefile @@ -0,0 +1,12 @@ +# $FreeBSD$ + +PROG_CXX= llvm-ar + +SRCDIR= tools/llvm-ar +SRCS+= llvm-ar.cpp + +LIBADD+= z + +LINKS+= ${BINDIR}/llvm-ar ${BINDIR}/llvm-ranlib + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-ar/Makefile.depend b/usr.bin/clang/llvm-ar/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-ar/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-ar/llvm-ar.1 b/usr.bin/clang/llvm-ar/llvm-ar.1 new file mode 100644 index 000000000000..7b7e062bc016 --- /dev/null +++ b/usr.bin/clang/llvm-ar/llvm-ar.1 @@ -0,0 +1,390 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-AR" "1" "2016-03-03" "3.8" "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] <archive> [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 "!<arch>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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-as/Makefile b/usr.bin/clang/llvm-as/Makefile new file mode 100644 index 000000000000..02c853e20655 --- /dev/null +++ b/usr.bin/clang/llvm-as/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-as + +SRCDIR= tools/llvm-as +SRCS+= llvm-as.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-as/Makefile.depend b/usr.bin/clang/llvm-as/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-as/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-as/llvm-as.1 b/usr.bin/clang/llvm-as/llvm-as.1 new file mode 100644 index 000000000000..bd00ef0a0d8f --- /dev/null +++ b/usr.bin/clang/llvm-as/llvm-as.1 @@ -0,0 +1,87 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-AS" "1" "2016-03-03" "3.8" "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 +.B \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 +.B \fB\-help\fP +Print a summary of command line options. +.TP +.B \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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-bcanalyzer/Makefile b/usr.bin/clang/llvm-bcanalyzer/Makefile new file mode 100644 index 000000000000..7e878991c6d1 --- /dev/null +++ b/usr.bin/clang/llvm-bcanalyzer/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-bcanalyzer + +SRCDIR= tools/llvm-bcanalyzer +SRCS+= llvm-bcanalyzer.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-bcanalyzer/Makefile.depend b/usr.bin/clang/llvm-bcanalyzer/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-bcanalyzer/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 b/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 new file mode 100644 index 000000000000..a88ab8870256 --- /dev/null +++ b/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 @@ -0,0 +1,476 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-BCANALYZER" "1" "2016-03-03" "3.8" "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 +\fB/CommandGuide/llvm\-dis\fP, \fB/BitCodeFormat\fP +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2003-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-cov/Makefile b/usr.bin/clang/llvm-cov/Makefile new file mode 100644 index 000000000000..1e82699c41c5 --- /dev/null +++ b/usr.bin/clang/llvm-cov/Makefile @@ -0,0 +1,20 @@ +# $FreeBSD$ + +PROG_CXX= llvm-cov + +SRCDIR= tools/llvm-cov +SRCS+= CodeCoverage.cpp +SRCS+= CoverageExporterJson.cpp +SRCS+= CoverageFilters.cpp +SRCS+= CoverageReport.cpp +SRCS+= CoverageSummaryInfo.cpp +SRCS+= SourceCoverageView.cpp +SRCS+= SourceCoverageViewHTML.cpp +SRCS+= SourceCoverageViewText.cpp +SRCS+= TestingSupport.cpp +SRCS+= gcov.cpp +SRCS+= llvm-cov.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-cov/Makefile.depend b/usr.bin/clang/llvm-cov/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-cov/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-cov/llvm-cov.1 b/usr.bin/clang/llvm-cov/llvm-cov.1 new file mode 100644 index 000000000000..07c400058af3 --- /dev/null +++ b/usr.bin/clang/llvm-cov/llvm-cov.1 @@ -0,0 +1,319 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-COV" "1" "2016-03-03" "3.8" "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 +.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=<DIR|FILE>, \-\-object\-directory=<DIR>, \-\-object\-file=<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 [\fISOURCES\fP] +.SS DESCRIPTION +.sp +The \fBllvm\-cov show\fP command shows line by line coverage of a binary +\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 the \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. This is enabled by default, 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. +.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. +.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. +.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. +.UNINDENT +.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=<name> +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 \-name=<NAME> +Show code coverage only for functions with the given name. +.UNINDENT +.INDENT 0.0 +.TP +.B \-name\-regex=<PATTERN> +Show code coverage only for functions that match the given regular expression. +.UNINDENT +.INDENT 0.0 +.TP +.B \-line\-coverage\-gt=<N> +Show code coverage only for functions with line coverage greater than the +given threshold. +.UNINDENT +.INDENT 0.0 +.TP +.B \-line\-coverage\-lt=<N> +Show code coverage only for functions with line coverage less than the given +threshold. +.UNINDENT +.INDENT 0.0 +.TP +.B \-region\-coverage\-gt=<N> +Show code coverage only for functions with region coverage greater than the +given threshold. +.UNINDENT +.INDENT 0.0 +.TP +.B \-region\-coverage\-lt=<N> +Show code coverage only for functions with region coverage less than the given +threshold. +.UNINDENT +.SH REPORT COMMAND +.SS SYNOPSIS +.sp +\fBllvm\-cov report\fP [\fIoptions\fP] \-instr\-profile \fIPROFILE\fP \fIBIN\fP [\fISOURCES\fP] +.SS DESCRIPTION +.sp +The \fBllvm\-cov report\fP command displays a summary of the coverage of a +binary \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. +.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=<name> +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 +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2003-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-cxxdump/Makefile b/usr.bin/clang/llvm-cxxdump/Makefile new file mode 100644 index 000000000000..21d0daf3ee11 --- /dev/null +++ b/usr.bin/clang/llvm-cxxdump/Makefile @@ -0,0 +1,12 @@ +# $FreeBSD$ + +PROG_CXX= llvm-cxxdump +MAN= + +SRCDIR= tools/llvm-cxxdump +SRCS+= Error.cpp +SRCS+= llvm-cxxdump.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-cxxdump/Makefile.depend b/usr.bin/clang/llvm-cxxdump/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-cxxdump/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-cxxfilt/Makefile b/usr.bin/clang/llvm-cxxfilt/Makefile new file mode 100644 index 000000000000..dce1c2efdaf0 --- /dev/null +++ b/usr.bin/clang/llvm-cxxfilt/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +PROG_CXX= llvm-cxxfilt +MAN= + +SRCDIR= tools/llvm-cxxfilt +SRCS+= llvm-cxxfilt.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-cxxfilt/Makefile.depend b/usr.bin/clang/llvm-cxxfilt/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-cxxfilt/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-diff/Makefile b/usr.bin/clang/llvm-diff/Makefile new file mode 100644 index 000000000000..4c667853d9c5 --- /dev/null +++ b/usr.bin/clang/llvm-diff/Makefile @@ -0,0 +1,13 @@ +# $FreeBSD$ + +PROG_CXX= llvm-diff + +SRCDIR= tools/llvm-diff +SRCS+= DiffConsumer.cpp +SRCS+= DiffLog.cpp +SRCS+= DifferenceEngine.cpp +SRCS+= llvm-diff.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-diff/Makefile.depend b/usr.bin/clang/llvm-diff/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-diff/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-diff/llvm-diff.1 b/usr.bin/clang/llvm-diff/llvm-diff.1 new file mode 100644 index 000000000000..9ec9940c646b --- /dev/null +++ b/usr.bin/clang/llvm-diff/llvm-diff.1 @@ -0,0 +1,77 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-DIFF" "1" "2016-03-03" "3.8" "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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-dis/Makefile b/usr.bin/clang/llvm-dis/Makefile new file mode 100644 index 000000000000..97de6e056f87 --- /dev/null +++ b/usr.bin/clang/llvm-dis/Makefile @@ -0,0 +1,8 @@ +# $FreeBSD$ + +PROG_CXX= llvm-dis + +SRCDIR= tools/llvm-dis +SRCS+= llvm-dis.cpp + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-dis/Makefile.depend b/usr.bin/clang/llvm-dis/Makefile.depend new file mode 100644 index 000000000000..9f12128ea718 --- /dev/null +++ b/usr.bin/clang/llvm-dis/Makefile.depend @@ -0,0 +1,24 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-dis/llvm-dis.1 b/usr.bin/clang/llvm-dis/llvm-dis.1 new file mode 100644 index 000000000000..2a9566e493b9 --- /dev/null +++ b/usr.bin/clang/llvm-dis/llvm-dis.1 @@ -0,0 +1,88 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-DIS" "1" "2016-03-03" "3.8" "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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-dwarfdump/Makefile b/usr.bin/clang/llvm-dwarfdump/Makefile new file mode 100644 index 000000000000..d56bb4395495 --- /dev/null +++ b/usr.bin/clang/llvm-dwarfdump/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-dwarfdump + +SRCDIR= tools/llvm-dwarfdump +SRCS+= llvm-dwarfdump.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-dwarfdump/Makefile.depend b/usr.bin/clang/llvm-dwarfdump/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-dwarfdump/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-dwarfdump/llvm-dwarfdump.1 b/usr.bin/clang/llvm-dwarfdump/llvm-dwarfdump.1 new file mode 100644 index 000000000000..8e559a2dfb20 --- /dev/null +++ b/usr.bin/clang/llvm-dwarfdump/llvm-dwarfdump.1 @@ -0,0 +1,60 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-DWARFDUMP" "1" "2016-03-03" "3.8" "LLVM" +.SH NAME +llvm-dwarfdump \- print contents of DWARF sections +. +.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] [\fIfilenames...\fP] +.SH DESCRIPTION +.sp +\fBllvm\-dwarfdump\fP parses DWARF sections in the object files +and prints their contents in human\-readable form. +.SH OPTIONS +.INDENT 0.0 +.TP +.B \-debug\-dump=section +Specify the DWARF section to dump. +For example, use \fBabbrev\fP to dump the contents of \fB\&.debug_abbrev\fP section, +\fBloc.dwo\fP to dump the contents of \fB\&.debug_loc.dwo\fP etc. +See \fBllvm\-dwarfdump \-\-help\fP for the complete list of supported sections. +Use \fBall\fP to dump all DWARF sections. It is the default. +.UNINDENT +.SH EXIT STATUS +.sp +\fBllvm\-dwarfdump\fP returns 0 if the input files were parsed and dumped +successfully. Otherwise, it returns 1. +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2003-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-extract/Makefile b/usr.bin/clang/llvm-extract/Makefile new file mode 100644 index 000000000000..cc356a060c4b --- /dev/null +++ b/usr.bin/clang/llvm-extract/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-extract + +SRCDIR= tools/llvm-extract +SRCS+= llvm-extract.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-extract/Makefile.depend b/usr.bin/clang/llvm-extract/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-extract/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-extract/llvm-extract.1 b/usr.bin/clang/llvm-extract/llvm-extract.1 new file mode 100644 index 000000000000..b69439c3f77c --- /dev/null +++ b/usr.bin/clang/llvm-extract/llvm-extract.1 @@ -0,0 +1,129 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-EXTRACT" "1" "2016-03-03" "3.8" "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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-link/Makefile b/usr.bin/clang/llvm-link/Makefile new file mode 100644 index 000000000000..9af68e8fa1ff --- /dev/null +++ b/usr.bin/clang/llvm-link/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-link + +SRCDIR= tools/llvm-link +SRCS+= llvm-link.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-link/Makefile.depend b/usr.bin/clang/llvm-link/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-link/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-link/llvm-link.1 b/usr.bin/clang/llvm-link/llvm-link.1 new file mode 100644 index 000000000000..91ed3770f50b --- /dev/null +++ b/usr.bin/clang/llvm-link/llvm-link.1 @@ -0,0 +1,89 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-LINK" "1" "2016-03-03" "3.8" "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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-lto/Makefile b/usr.bin/clang/llvm-lto/Makefile new file mode 100644 index 000000000000..500605868b83 --- /dev/null +++ b/usr.bin/clang/llvm-lto/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +PROG_CXX= llvm-lto +MAN= + +SRCDIR= tools/llvm-lto +SRCS= llvm-lto.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-lto/Makefile.depend b/usr.bin/clang/llvm-lto/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-lto/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-lto2/Makefile b/usr.bin/clang/llvm-lto2/Makefile new file mode 100644 index 000000000000..7e67c1bae972 --- /dev/null +++ b/usr.bin/clang/llvm-lto2/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +PROG_CXX= llvm-lto2 +MAN= + +SRCDIR= tools/llvm-lto2 +SRCS= llvm-lto2.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-lto2/Makefile.depend b/usr.bin/clang/llvm-lto2/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-lto2/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-mc/Makefile b/usr.bin/clang/llvm-mc/Makefile new file mode 100644 index 000000000000..64176f1b72a6 --- /dev/null +++ b/usr.bin/clang/llvm-mc/Makefile @@ -0,0 +1,12 @@ +# $FreeBSD$ + +PROG_CXX= llvm-mc +MAN= + +SRCDIR= tools/llvm-mc +SRCS+= Disassembler.cpp +SRCS+= llvm-mc.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-mc/Makefile.depend b/usr.bin/clang/llvm-mc/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-mc/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-modextract/Makefile b/usr.bin/clang/llvm-modextract/Makefile new file mode 100644 index 000000000000..30ac2f61c239 --- /dev/null +++ b/usr.bin/clang/llvm-modextract/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +PROG_CXX= llvm-modextract +MAN= + +SRCDIR= tools/llvm-modextract +SRCS= llvm-modextract.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-modextract/Makefile.depend b/usr.bin/clang/llvm-modextract/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-modextract/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-nm/Makefile b/usr.bin/clang/llvm-nm/Makefile new file mode 100644 index 000000000000..55e35c3c14dc --- /dev/null +++ b/usr.bin/clang/llvm-nm/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-nm + +SRCDIR= tools/llvm-nm +SRCS+= llvm-nm.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-nm/Makefile.depend b/usr.bin/clang/llvm-nm/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-nm/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-nm/llvm-nm.1 b/usr.bin/clang/llvm-nm/llvm-nm.1 new file mode 100644 index 000000000000..7454a15a1562 --- /dev/null +++ b/usr.bin/clang/llvm-nm/llvm-nm.1 @@ -0,0 +1,213 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-NM" "1" "2016-03-03" "3.8" "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 \fB\-\-format=bsd\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-P +Use POSIX.2 output format. Alias for \fB\-\-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 \-\-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 +.SH BUGS +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fBllvm\-nm\fP cannot demangle C++ mangled names, like GNU \fBnm\fP +can. +.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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-objdump/Makefile b/usr.bin/clang/llvm-objdump/Makefile new file mode 100644 index 000000000000..be3412a7db6c --- /dev/null +++ b/usr.bin/clang/llvm-objdump/Makefile @@ -0,0 +1,15 @@ +# $FreeBSD$ + +PROG_CXX= llvm-objdump +MAN= + +SRCDIR= tools/llvm-objdump +SRCS+= COFFDump.cpp +SRCS+= ELFDump.cpp +SRCS+= MachODump.cpp +SRCS+= WasmDump.cpp +SRCS+= llvm-objdump.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-objdump/Makefile.depend b/usr.bin/clang/llvm-objdump/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-objdump/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-pdbdump/Makefile b/usr.bin/clang/llvm-pdbdump/Makefile new file mode 100644 index 000000000000..7eef8e0696da --- /dev/null +++ b/usr.bin/clang/llvm-pdbdump/Makefile @@ -0,0 +1,30 @@ +# $FreeBSD$ + +PROG_CXX= llvm-pdbdump +MAN= + +SRCDIR= tools/llvm-pdbdump +SRCS+= Analyze.cpp +SRCS+= C13DebugFragmentVisitor.cpp +SRCS+= CompactTypeDumpVisitor.cpp +SRCS+= Diff.cpp +SRCS+= LLVMOutputStyle.cpp +SRCS+= LinePrinter.cpp +SRCS+= PdbYaml.cpp +SRCS+= PrettyBuiltinDumper.cpp +SRCS+= PrettyClassDefinitionDumper.cpp +SRCS+= PrettyClassLayoutGraphicalDumper.cpp +SRCS+= PrettyCompilandDumper.cpp +SRCS+= PrettyEnumDumper.cpp +SRCS+= PrettyExternalSymbolDumper.cpp +SRCS+= PrettyFunctionDumper.cpp +SRCS+= PrettyTypeDumper.cpp +SRCS+= PrettyTypedefDumper.cpp +SRCS+= PrettyVariableDumper.cpp +SRCS+= StreamUtil.cpp +SRCS+= YAMLOutputStyle.cpp +SRCS+= YamlSymbolDumper.cpp +SRCS+= YamlTypeDumper.cpp +SRCS+= llvm-pdbdump.cpp + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-pdbdump/Makefile.depend b/usr.bin/clang/llvm-pdbdump/Makefile.depend new file mode 100644 index 000000000000..9f12128ea718 --- /dev/null +++ b/usr.bin/clang/llvm-pdbdump/Makefile.depend @@ -0,0 +1,24 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-profdata/Makefile b/usr.bin/clang/llvm-profdata/Makefile new file mode 100644 index 000000000000..d243113c6a73 --- /dev/null +++ b/usr.bin/clang/llvm-profdata/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-profdata + +SRCDIR= tools/llvm-profdata +SRCS+= llvm-profdata.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-profdata/Makefile.depend b/usr.bin/clang/llvm-profdata/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-profdata/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-profdata/llvm-profdata.1 b/usr.bin/clang/llvm-profdata/llvm-profdata.1 new file mode 100644 index 000000000000..18c26fc9b5fe --- /dev/null +++ b/usr.bin/clang/llvm-profdata/llvm-profdata.1 @@ -0,0 +1,223 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-PROFDATA" "1" "2016-03-03" "3.8" "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. +.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 input +file 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 \-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 +.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 \-sample +Specify that the input profile is a sample\-based profile. +.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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-rtdyld/Makefile b/usr.bin/clang/llvm-rtdyld/Makefile new file mode 100644 index 000000000000..2e7b9b4f8d10 --- /dev/null +++ b/usr.bin/clang/llvm-rtdyld/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +PROG_CXX= llvm-rtdyld +MAN= + +SRCDIR= tools/llvm-rtdyld +SRCS+= llvm-rtdyld.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-rtdyld/Makefile.depend b/usr.bin/clang/llvm-rtdyld/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-rtdyld/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-symbolizer/Makefile b/usr.bin/clang/llvm-symbolizer/Makefile new file mode 100644 index 000000000000..1c8719439813 --- /dev/null +++ b/usr.bin/clang/llvm-symbolizer/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG_CXX= llvm-symbolizer + +SRCDIR= tools/llvm-symbolizer +SRCS+= llvm-symbolizer.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-symbolizer/Makefile.depend b/usr.bin/clang/llvm-symbolizer/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-symbolizer/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 b/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 new file mode 100644 index 000000000000..fc43d8d43955 --- /dev/null +++ b/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 @@ -0,0 +1,163 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-SYMBOLIZER" "1" "2016-03-03" "3.8" "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=<path/to/file.dSYM> +(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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-tblgen/Makefile b/usr.bin/clang/llvm-tblgen/Makefile new file mode 100644 index 000000000000..58c15a37d065 --- /dev/null +++ b/usr.bin/clang/llvm-tblgen/Makefile @@ -0,0 +1,45 @@ +# $FreeBSD$ + +PROG_CXX= llvm-tblgen + +SRCDIR= utils/TableGen +SRCS+= AsmMatcherEmitter.cpp +SRCS+= AsmWriterEmitter.cpp +SRCS+= AsmWriterInst.cpp +SRCS+= Attributes.cpp +SRCS+= CTagsEmitter.cpp +SRCS+= CallingConvEmitter.cpp +SRCS+= CodeEmitterGen.cpp +SRCS+= CodeGenDAGPatterns.cpp +SRCS+= CodeGenInstruction.cpp +SRCS+= CodeGenMapTable.cpp +SRCS+= CodeGenRegisters.cpp +SRCS+= CodeGenSchedule.cpp +SRCS+= CodeGenTarget.cpp +SRCS+= DAGISelEmitter.cpp +SRCS+= DAGISelMatcher.cpp +SRCS+= DAGISelMatcherEmitter.cpp +SRCS+= DAGISelMatcherGen.cpp +SRCS+= DAGISelMatcherOpt.cpp +SRCS+= DFAPacketizerEmitter.cpp +SRCS+= DisassemblerEmitter.cpp +SRCS+= FastISelEmitter.cpp +SRCS+= FixedLenDecoderEmitter.cpp +SRCS+= GlobalISelEmitter.cpp +SRCS+= InstrInfoEmitter.cpp +SRCS+= IntrinsicEmitter.cpp +SRCS+= OptParserEmitter.cpp +SRCS+= PseudoLoweringEmitter.cpp +SRCS+= RegisterBankEmitter.cpp +SRCS+= RegisterInfoEmitter.cpp +SRCS+= SearchableTableEmitter.cpp +SRCS+= SubtargetEmitter.cpp +SRCS+= SubtargetFeatureInfo.cpp +SRCS+= TableGen.cpp +SRCS+= Types.cpp +SRCS+= X86DisassemblerTables.cpp +SRCS+= X86EVEX2VEXTablesEmitter.cpp +SRCS+= X86ModRMFilters.cpp +SRCS+= X86RecognizableInstr.cpp + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-tblgen/Makefile.depend b/usr.bin/clang/llvm-tblgen/Makefile.depend new file mode 100644 index 000000000000..9f12128ea718 --- /dev/null +++ b/usr.bin/clang/llvm-tblgen/Makefile.depend @@ -0,0 +1,24 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-tblgen/Makefile.depend.host b/usr.bin/clang/llvm-tblgen/Makefile.depend.host new file mode 100644 index 000000000000..fc72483f0f06 --- /dev/null +++ b/usr.bin/clang/llvm-tblgen/Makefile.depend.host @@ -0,0 +1,12 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + lib/clang/libllvmminimal \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm-tblgen/llvm-tblgen.1 b/usr.bin/clang/llvm-tblgen/llvm-tblgen.1 new file mode 100644 index 000000000000..291a9de8e44d --- /dev/null +++ b/usr.bin/clang/llvm-tblgen/llvm-tblgen.1 @@ -0,0 +1,182 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "TBLGEN" "1" "2016-03-03" "3.8" "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\&. +.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 \-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. +.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 +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-xray/Makefile b/usr.bin/clang/llvm-xray/Makefile new file mode 100644 index 000000000000..dd16abe7ced5 --- /dev/null +++ b/usr.bin/clang/llvm-xray/Makefile @@ -0,0 +1,14 @@ +# $FreeBSD$ + +PROG_CXX= llvm-xray +MAN= + +SRCDIR= tools/llvm-xray +SRCS+= func-id-helper.cc +SRCS+= llvm-xray.cc +SRCS+= xray-extract.cc +SRCS+= xray-registry.cc + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/llvm-xray/Makefile.depend b/usr.bin/clang/llvm-xray/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/llvm-xray/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/llvm.prog.mk b/usr.bin/clang/llvm.prog.mk new file mode 100644 index 000000000000..94fe1eec6424 --- /dev/null +++ b/usr.bin/clang/llvm.prog.mk @@ -0,0 +1,27 @@ +# $FreeBSD$ + +.include "${SRCTOP}/lib/clang/llvm.pre.mk" + +CFLAGS+= -I${OBJTOP}/lib/clang/libllvm + +.include "${SRCTOP}/lib/clang/llvm.build.mk" + +# Special case for the bootstrap-tools phase. +.if (defined(TOOLS_PREFIX) || ${MACHINE} == "host") && \ + (${PROG_CXX} == "clang-tblgen" || ${PROG_CXX} == "llvm-tblgen") +LIBDEPS+= llvmminimal +.else +LIBDEPS+= llvm +.endif + +.for lib in ${LIBDEPS} +DPADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +LDADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a +.endfor + +PACKAGE= clang + +LIBADD+= ncursesw +LIBADD+= pthread + +.include <bsd.prog.mk> diff --git a/usr.bin/clang/opt/Makefile b/usr.bin/clang/opt/Makefile new file mode 100644 index 000000000000..9733f9a517eb --- /dev/null +++ b/usr.bin/clang/opt/Makefile @@ -0,0 +1,16 @@ +# $FreeBSD$ + +PROG_CXX= opt + +SRCDIR= tools/opt +SRCS+= AnalysisWrappers.cpp +SRCS+= BreakpointPrinter.cpp +SRCS+= GraphPrinters.cpp +SRCS+= NewPMDriver.cpp +SRCS+= PassPrinters.cpp +SRCS+= PrintSCC.cpp +SRCS+= opt.cpp + +LIBADD+= z + +.include "../llvm.prog.mk" diff --git a/usr.bin/clang/opt/Makefile.depend b/usr.bin/clang/opt/Makefile.depend new file mode 100644 index 000000000000..3fd78c934924 --- /dev/null +++ b/usr.bin/clang/opt/Makefile.depend @@ -0,0 +1,25 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + gnu/lib/csu \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/clang/libllvm \ + lib/libc \ + lib/libc++ \ + lib/libcompiler_rt \ + lib/libcxxrt \ + lib/libthr \ + lib/libz \ + lib/msun \ + lib/ncurses/ncursesw \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.bin/clang/opt/opt.1 b/usr.bin/clang/opt/opt.1 new file mode 100644 index 000000000000..a498d998bea4 --- /dev/null +++ b/usr.bin/clang/opt/opt.1 @@ -0,0 +1,170 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "OPT" "1" "2016-03-03" "3.8" "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 \fB\-analyze\fP option is +given. +.sp +When \fB\-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 \fB\-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 <filename> +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 \fB\-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 \fB\-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 \fB\-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. +.UNINDENT +.INDENT 0.0 +.TP +.B \-load=<plugin> +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-2016, LLVM Project +.\" Generated by docutils manpage writer. +. |