diff options
Diffstat (limited to 'usr.bin/clang')
39 files changed, 4404 insertions, 0 deletions
diff --git a/usr.bin/clang/Makefile b/usr.bin/clang/Makefile new file mode 100644 index 0000000..db5fae7 --- /dev/null +++ b/usr.bin/clang/Makefile @@ -0,0 +1,28 @@ +# $FreeBSD$ + +.include <bsd.own.mk> + +SUBDIR= clang clang-tblgen tblgen + +.if ${MK_CLANG_EXTRAS} != "no" && !defined(TOOLS_PREFIX) +SUBDIR+=bugpoint \ + llc \ + lli \ + llvm-ar \ + llvm-as \ + llvm-bcanalyzer \ + llvm-diff \ + llvm-dis \ + llvm-extract \ + llvm-link \ + llvm-mc \ + llvm-nm \ + llvm-objdump \ + llvm-prof \ + llvm-ranlib \ + llvm-rtdyld \ + macho-dump \ + opt +.endif + +.include <bsd.subdir.mk> diff --git a/usr.bin/clang/bugpoint/Makefile b/usr.bin/clang/bugpoint/Makefile new file mode 100644 index 0000000..410b91b --- /dev/null +++ b/usr.bin/clang/bugpoint/Makefile @@ -0,0 +1,36 @@ +# $FreeBSD$ + +PROG_CXX=bugpoint + +SRCDIR= tools/bugpoint +SRCS= BugDriver.cpp \ + CrashDebugger.cpp \ + ExecutionDriver.cpp \ + ExtractFunction.cpp \ + FindBugs.cpp \ + Miscompilation.cpp \ + OptimizerDriver.cpp \ + ToolRunner.cpp \ + bugpoint.cpp + +TGHDRS= Intrinsics +LIBDEPS=llvmbitwriter \ + llvmlinker \ + llvmarchive \ + llvmbitreader \ + llvmipo \ + llvmvectorize \ + llvmscalaropts \ + llvminstcombine \ + llvminstrumentation \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmtarget \ + llvmmc \ + llvmobject \ + llvmasmparser \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/bugpoint/bugpoint.1 b/usr.bin/clang/bugpoint/bugpoint.1 new file mode 100644 index 0000000..0e119a4 --- /dev/null +++ b/usr.bin/clang/bugpoint/bugpoint.1 @@ -0,0 +1,284 @@ +.\" $FreeBSD$ +.TH "BUGPOINT" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 \-args to the test program whenever it runs. +Note that if any of the \fIprogram args\fP start with a \(aq\-\(aq, you should use: +.sp +.nf +.ft C +bugpoint [bugpoint args] \-\-args \-\- [program args] +.ft P +.fi +.sp +The "\-\-" 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 \-\-tool\-args to the LLVM tool under test +(\fBllc\fP, \fBlli\fP, etc.) whenever it runs. You should use this option in the +following way: +.sp +.nf +.ft C +bugpoint [bugpoint args] \-\-tool\-args \-\- [tool args] +.ft P +.fi +.sp +The "\-\-" 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: +.sp +.nf +.ft C +bugpoint \-\-load myNewPass.so \-help +.ft P +.fi +.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\-\-profile\-info\-file\fP \fIfilename\fP +.INDENT 0.0 +.INDENT 3.5 +Profile file loaded by \fB\-\-profile\-loader\fP. +.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: +.sp +.nf +.ft C +#!/bin/sh +llc "$@" +not FileCheck [bugpoint input file].ll < bugpoint\-test\-program.s +.ft P +.fi +.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 +2012, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/clang-tblgen/Makefile b/usr.bin/clang/clang-tblgen/Makefile new file mode 100644 index 0000000..9e8af45 --- /dev/null +++ b/usr.bin/clang/clang-tblgen/Makefile @@ -0,0 +1,21 @@ +# $FreeBSD$ + +PROG_CXX=clang-tblgen +NO_MAN= + +SRCDIR= tools/clang/utils/TableGen +SRCS= ClangASTNodesEmitter.cpp \ + ClangAttrEmitter.cpp \ + ClangCommentCommandInfoEmitter.cpp \ + ClangCommentHTMLTagsEmitter.cpp \ + ClangDiagnosticsEmitter.cpp \ + ClangSACheckersEmitter.cpp \ + NeonEmitter.cpp \ + OptParserEmitter.cpp \ + TableGen.cpp +LLVM_REQUIRES_EH= + +LIBDEPS=llvmtablegen \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/clang.prog.mk b/usr.bin/clang/clang.prog.mk new file mode 100644 index 0000000..9ebac4f --- /dev/null +++ b/usr.bin/clang/clang.prog.mk @@ -0,0 +1,14 @@ +# $FreeBSD$ + +LLVM_SRCS= ${.CURDIR}/../../../contrib/llvm + +.include "../../lib/clang/clang.build.mk" + +.for lib in ${LIBDEPS} +DPADD+= ${.OBJDIR}/../../../lib/clang/lib${lib}/lib${lib}.a +LDADD+= ${.OBJDIR}/../../../lib/clang/lib${lib}/lib${lib}.a +.endfor + +BINDIR?= /usr/bin + +.include <bsd.prog.mk> diff --git a/usr.bin/clang/clang/Makefile b/usr.bin/clang/clang/Makefile new file mode 100644 index 0000000..6fa9b80 --- /dev/null +++ b/usr.bin/clang/clang/Makefile @@ -0,0 +1,102 @@ +# $FreeBSD$ + +.include <bsd.own.mk> + +PROG_CXX=clang + +SRCDIR= tools/clang/tools/driver +SRCS= cc1_main.cpp \ + cc1as_main.cpp \ + driver.cpp + +.if ${MK_SHARED_TOOLCHAIN} == "no" +NO_SHARED?= yes +.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" +LINKS+= ${BINDIR}/clang ${BINDIR}/cc \ + ${BINDIR}/clang ${BINDIR}/c++ \ + ${BINDIR}/clang ${BINDIR}/CC \ + ${BINDIR}/clang ${BINDIR}/cpp +MLINKS+= clang.1 cc.1 \ + clang.1 c++.1 \ + clang.1 CC.1 \ + clang.1 cpp.1 +.endif + +TGHDRS= CC1AsOptions \ + DiagnosticCommonKinds \ + DiagnosticDriverKinds \ + DiagnosticFrontendKinds \ + DiagnosticLexKinds \ + DiagnosticSemaKinds \ + Options +LIBDEPS=clangfrontendtool \ + clangfrontend \ + clangdriver \ + clangserialization \ + clangcodegen \ + clangparse \ + clangsema \ + clangstaticanalyzerfrontend \ + clangstaticanalyzercheckers \ + clangstaticanalyzercore \ + clanganalysis \ + clangarcmigrate \ + clangrewritefrontend \ + clangrewritecore \ + clangedit \ + clangast \ + clanglex \ + clangbasic \ + llvmlinker \ + llvmarchive \ + llvmipo \ + llvmvectorize \ + llvminstrumentation \ + llvmbitwriter \ + llvmbitreader \ + llvmasmparser \ + llvmarmdisassembler \ + llvmarmasmparser \ + llvmarmcodegen \ + llvmarmdesc \ + llvmarminfo \ + llvmarminstprinter \ + llvmmipsasmparser \ + llvmmipscodegen \ + llvmmipsdesc \ + llvmmipsinstprinter \ + llvmmipsdisassembler \ + llvmmipsinfo \ + llvmpowerpccodegen \ + llvmpowerpcdesc \ + llvmpowerpcinfo \ + llvmpowerpcinstprinter \ + llvmx86asmparser \ + llvmx86codegen \ + llvmselectiondag \ + llvmasmprinter \ + llvmmcparser \ + llvmcodegen \ + llvmscalaropts \ + llvminstcombine \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmx86disassembler \ + llvmx86desc \ + llvmx86info \ + llvmtarget \ + llvmx86instprinter \ + llvmmc \ + llvmobject \ + llvmx86utils \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/clang/clang.1 b/usr.bin/clang/clang/clang.1 new file mode 100644 index 0000000..214fe0e --- /dev/null +++ b/usr.bin/clang/clang/clang.1 @@ -0,0 +1,510 @@ +.\" $FreeBSD$ +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "CLANG 1" +.TH CLANG 1 "2012-08-09" "clang 3.2" "Clang Tools Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +clang \- the Clang C, C++, and Objective\-C compiler +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBclang\fR [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] \fB\-std=\fR\fIstandard\fR \fB\-g\fR + [\fB\-O0\fR|\fB\-O1\fR|\fB\-O2\fR|\fB\-Os\fR|\fB\-Oz\fR|\fB\-O3\fR|\fB\-O4\fR] + \fB\-W\fR\fIwarnings...\fR \fB\-pedantic\fR + \fB\-I\fR\fIdir...\fR \fB\-L\fR\fIdir...\fR + \fB\-D\fR\fImacro[=defn]\fR + \fB\-f\fR\fIfeature-option...\fR + \fB\-m\fR\fImachine-option...\fR + \fB\-o\fR \fIoutput-file\fR + \fB\-stdlib=\fR\fIlibrary\fR + \fIinput-filenames\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBclang\fR 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: +.IP "\fBDriver\fR" 4 +.IX Item "Driver" +The \fBclang\fR 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. +.IP "\fBPreprocessing\fR" 4 +.IX Item "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 \*(L".i\*(R" (for C), \*(L".ii\*(R" (for \*(C+), \*(L".mi\*(R" (for +Objective-C) , or \*(L".mii\*(R" (for Objective\-\*(C+) file. +.IP "\fBParsing and Semantic Analysis\fR" 4 +.IX Item "Parsing and Semantic Analysis" +This stage parses the input file, translating preprocessor tokens into a parse +tree. Once in the form of a parser 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 \*(L"Abstract Syntax Tree\*(R" (\s-1AST\s0). +.IP "\fBCode Generation and Optimization\fR" 4 +.IX Item "Code Generation and Optimization" +This stage translates an \s-1AST\s0 into low-level intermediate code (known as \*(L"\s-1LLVM\s0 +\&\s-1IR\s0\*(R") 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 \*(L".s\*(R" file or \*(L"assembly\*(R" 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 \*(L".s\*(R" file and of calling the target assembler. +.IP "\fBAssembler\fR" 4 +.IX Item "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 \*(L".o\*(R" +file or \*(L"object\*(R" file. +.IP "\fBLinker\fR" 4 +.IX Item "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 +\&\*(L"a.out\*(R", \*(L".dylib\*(R" or \*(L".so\*(R" file. +.PP +The Clang compiler supports a large number of options to control each of these +stages. In addition to compilation of code, Clang also supports other tools: +.PP +\&\fBClang Static Analyzer\fR +.PP +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. +.SH "OPTIONS" +.IX Header "OPTIONS" +.SS "Stage Selection Options" +.IX Subsection "Stage Selection Options" +.IP "\fB\-E\fR" 4 +.IX Item "-E" +Run the preprocessor stage. +.IP "\fB\-fsyntax\-only\fR" 4 +.IX Item "-fsyntax-only" +Run the preprocessor, parser and type checking stages. +.IP "\fB\-S\fR" 4 +.IX Item "-S" +Run the previous stages as well as \s-1LLVM\s0 generation and optimization stages and +target-specific code generation, producing an assembly file. +.IP "\fB\-c\fR" 4 +.IX Item "-c" +Run all of the above, plus the assembler, generating a target \*(L".o\*(R" object file. +.IP "\fBno stage selection option\fR" 4 +.IX Item "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. +.IP "\fB\-\-analyze\fR" 4 +.IX Item "--analyze" +Run the Clang Static Analyzer. +.SS "Language Selection and Mode Options" +.IX Subsection "Language Selection and Mode Options" +.IP "\fB\-x\fR \fIlanguage\fR" 4 +.IX Item "-x language" +Treat subsequent input files as having type \fIlanguage\fR. +.IP "\fB\-std\fR=\fIlanguage\fR" 4 +.IX Item "-std=language" +Specify the language standard to compile for. +.IP "\fB\-stdlib\fR=\fIlanguage\fR" 4 +.IX Item "-stdlib=language" +Specify the \*(C+ standard library to use; supported options are libstdc++ and +libc++. +.IP "\fB\-ansi\fR" 4 +.IX Item "-ansi" +Same as \fB\-std=c89\fR. +.IP "\fB\-ObjC++\fR" 4 +.IX Item "-ObjC++" +Treat source input files as Objective\-\*(C+ inputs. +.IP "\fB\-ObjC\fR" 4 +.IX Item "-ObjC" +Treat source input files as Objective-C inputs. +.IP "\fB\-trigraphs\fR" 4 +.IX Item "-trigraphs" +Enable trigraphs. +.IP "\fB\-ffreestanding\fR" 4 +.IX Item "-ffreestanding" +Indicate that the file should be compiled for a freestanding, not a hosted, +environment. +.IP "\fB\-fno\-builtin\fR" 4 +.IX Item "-fno-builtin" +Disable special handling and optimizations of builtin functions like strlen and +malloc. +.IP "\fB\-fmath\-errno\fR" 4 +.IX Item "-fmath-errno" +Indicate that math functions should be treated as updating errno. +.IP "\fB\-fpascal\-strings\fR" 4 +.IX Item "-fpascal-strings" +Enable support for Pascal-style strings with \*(L"\epfoo\*(R". +.IP "\fB\-fms\-extensions\fR" 4 +.IX Item "-fms-extensions" +Enable support for Microsoft extensions. +.IP "\fB\-fmsc\-version=\fR" 4 +.IX Item "-fmsc-version=" +Set _MSC_VER. Defaults to 1300 on Windows. Not set otherwise. +.IP "\fB\-fborland\-extensions\fR" 4 +.IX Item "-fborland-extensions" +Enable support for Borland extensions. +.IP "\fB\-fwritable\-strings\fR" 4 +.IX Item "-fwritable-strings" +Make all string literals default to writable. This disables uniquing of +strings and other optimizations. +.IP "\fB\-flax\-vector\-conversions\fR" 4 +.IX Item "-flax-vector-conversions" +Allow loose type checking rules for implicit vector conversions. +.IP "\fB\-fblocks\fR" 4 +.IX Item "-fblocks" +Enable the \*(L"Blocks\*(R" language feature. +.IP "\fB\-fobjc\-gc\-only\fR" 4 +.IX Item "-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. +.IP "\fB\-fobjc\-gc\fR" 4 +.IX Item "-fobjc-gc" +Indicate that Objective-C code should be compiled in hybrid-GC mode, which works +with both \s-1GC\s0 and non-GC mode. +.IP "\fB\-fobjc\-abi\-version\fR=\fIversion\fR" 4 +.IX Item "-fobjc-abi-version=version" +Select the Objective-C \s-1ABI\s0 version to use. Available versions are 1 (legacy +\&\*(L"fragile\*(R" \s-1ABI\s0), 2 (non-fragile \s-1ABI\s0 1), and 3 (non-fragile \s-1ABI\s0 2). +.IP "\fB\-fobjc\-nonfragile\-abi\-version\fR=\fIversion\fR" 4 +.IX Item "-fobjc-nonfragile-abi-version=version" +Select the Objective-C non-fragile \s-1ABI\s0 version to use by default. This will only +be used as the Objective-C \s-1ABI\s0 when the non-fragile \s-1ABI\s0 is enabled (either via +\&\-fobjc\-nonfragile\-abi, or because it is the platform default). +.IP "\fB\-fobjc\-nonfragile\-abi\fR" 4 +.IX Item "-fobjc-nonfragile-abi" +Enable use of the Objective-C non-fragile \s-1ABI\s0. On platforms for which this is +the default \s-1ABI\s0, it can be disabled with \fB\-fno\-objc\-nonfragile\-abi\fR. +.SS "Target Selection Options" +.IX Subsection "Target Selection Options" +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. +.IP "\fB\-arch\fR \fIarchitecture\fR" 4 +.IX Item "-arch architecture" +Specify the architecture to build for. +.IP "\fB\-mmacosx\-version\-min\fR=\fIversion\fR" 4 +.IX Item "-mmacosx-version-min=version" +When building for Mac \s-1OS/X\s0, specify the minimum version supported by your +application. +.IP "\fB\-miphoneos\-version\-min\fR" 4 +.IX Item "-miphoneos-version-min" +When building for iPhone \s-1OS\s0, specify the minimum version supported by your +application. +.IP "\fB\-march\fR=\fIcpu\fR" 4 +.IX Item "-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. +.SS "Code Generation Options" +.IX Subsection "Code Generation Options" +.IP "\fB\-O0\fR \fB\-O1\fR \fB\-O2\fR \fB\-Os\fR \fB\-Oz\fR \fB\-O3\fR \fB\-O4\fR" 4 +.IX Item "-O0 -O1 -O2 -Os -Oz -O3 -O4" +Specify which optimization level to use. \fB\-O0\fR means \*(L"no optimization\*(R": this +level compiles the fastest and generates the most debuggable code. \fB\-O2\fR is a +moderate level of optimization which enables most optimizations. \fB\-Os\fR is like +\&\fB\-O2\fR with extra optimizations to reduce code size. \fB\-Oz\fR is like \fB\-Os\fR +(and thus \fB\-O2\fR), but reduces code size further. \fB\-O3\fR is like \fB\-O2\fR, +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). On +supported platforms, \fB\-O4\fR enables link-time optimization; object files are +stored in the \s-1LLVM\s0 bitcode file format and whole program optimization is done at +link time. \fB\-O1\fR is somewhere between \fB\-O0\fR and \fB\-O2\fR. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +Generate debug information. Note that Clang debug information works best at +\&\fB\-O0\fR. At higher optimization levels, only line number information is +currently available. +.IP "\fB\-fexceptions\fR" 4 +.IX Item "-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. +.IP "\fB\-ftrapv\fR" 4 +.IX Item "-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. +.IP "\fB\-fvisibility\fR" 4 +.IX Item "-fvisibility" +This flag sets the default visibility level. +.IP "\fB\-fcommon\fR" 4 +.IX Item "-fcommon" +This flag specifies that variables without initializers get common linkage. It +can be disabled with \fB\-fno\-common\fR. +.IP "\fB\-ftls\-model\fR" 4 +.IX Item "-ftls-model" +Set the default thread-local storage (\s-1TLS\s0) model to use for thread-local +variables. Valid values are: \*(L"global-dynamic\*(R", \*(L"local-dynamic\*(R", \*(L"initial-exec\*(R" +and \*(L"local-exec\*(R". The default is \*(L"global-dynamic\*(R". The default model can be +overridden with the tls_model attribute. The compiler will try to choose a more +efficient model if possible. +.IP "\fB\-flto\fR \fB\-emit\-llvm\fR" 4 +.IX Item "-flto -emit-llvm" +Generate output files in \s-1LLVM\s0 formats, suitable for link time optimization. When +used with \fB\-S\fR this generates \s-1LLVM\s0 intermediate language assembly files, +otherwise this generates \s-1LLVM\s0 bitcode format object files (which may be passed +to the linker depending on the stage selection options). +.SS "Driver Options" +.IX Subsection "Driver Options" +.IP "\fB\-###\fR" 4 +.IX Item "-###" +Print the commands to run for this compilation. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Display available options. +.IP "\fB\-Qunused\-arguments\fR" 4 +.IX Item "-Qunused-arguments" +Don't emit warning for unused driver arguments. +.IP "\fB\-Wa,\fR\fIargs\fR" 4 +.IX Item "-Wa,args" +Pass the comma separated arguments in \fIargs\fR to the assembler. +.IP "\fB\-Wl,\fR\fIargs\fR" 4 +.IX Item "-Wl,args" +Pass the comma separated arguments in \fIargs\fR to the linker. +.IP "\fB\-Wp,\fR\fIargs\fR" 4 +.IX Item "-Wp,args" +Pass the comma separated arguments in \fIargs\fR to the preprocessor. +.IP "\fB\-Xanalyzer\fR \fIarg\fR" 4 +.IX Item "-Xanalyzer arg" +Pass \fIarg\fR to the static analyzer. +.IP "\fB\-Xassembler\fR \fIarg\fR" 4 +.IX Item "-Xassembler arg" +Pass \fIarg\fR to the assembler. +.IP "\fB\-Xlinker\fR \fIarg\fR" 4 +.IX Item "-Xlinker arg" +Pass \fIarg\fR to the linker. +.IP "\fB\-Xpreprocessor\fR \fIarg\fR" 4 +.IX Item "-Xpreprocessor arg" +Pass \fIarg\fR to the preprocessor. +.IP "\fB\-o\fR \fIfile\fR" 4 +.IX Item "-o file" +Write output to \fIfile\fR. +.IP "\fB\-print\-file\-name\fR=\fIfile\fR" 4 +.IX Item "-print-file-name=file" +Print the full library path of \fIfile\fR. +.IP "\fB\-print\-libgcc\-file\-name\fR" 4 +.IX Item "-print-libgcc-file-name" +Print the library path for \*(L"libgcc.a\*(R". +.IP "\fB\-print\-prog\-name\fR=\fIname\fR" 4 +.IX Item "-print-prog-name=name" +Print the full program path of \fIname\fR. +.IP "\fB\-print\-search\-dirs\fR" 4 +.IX Item "-print-search-dirs" +Print the paths used for finding libraries and programs. +.IP "\fB\-save\-temps\fR" 4 +.IX Item "-save-temps" +Save intermediate compilation results. +.IP "\fB\-integrated\-as\fR \fB\-no\-integrated\-as\fR" 4 +.IX Item "-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. +.IP "\fB\-time\fR" 4 +.IX Item "-time" +Time individual commands. +.IP "\fB\-ftime\-report\fR" 4 +.IX Item "-ftime-report" +Print timing summary of each stage of compilation. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Show commands to run and use verbose output. +.SS "Diagnostics Options" +.IX Subsection "Diagnostics Options" +.IP "\fB\-fshow\-column\fR \fB\-fshow\-source\-location\fR \fB\-fcaret\-diagnostics\fR \fB\-fdiagnostics\-fixit\-info\fR \fB\-fdiagnostics\-parseable\-fixits\fR \fB\-fdiagnostics\-print\-source\-range\-info\fR \fB\-fprint\-source\-range\-info\fR \fB\-fdiagnostics\-show\-option\fR \fB\-fmessage\-length\fR" 4 +.IX Item "-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's Manual for more information. +.SS "Preprocessor Options" +.IX Subsection "Preprocessor Options" +.IP "\fB\-D\fR\fImacroname=value\fR" 4 +.IX Item "-Dmacroname=value" +Adds an implicit #define into the predefines buffer which is read before the +source file is preprocessed. +.IP "\fB\-U\fR\fImacroname\fR" 4 +.IX Item "-Umacroname" +Adds an implicit #undef into the predefines buffer which is read before the +source file is preprocessed. +.IP "\fB\-include\fR \fIfilename\fR" 4 +.IX Item "-include filename" +Adds an implicit #include into the predefines buffer which is read before the +source file is preprocessed. +.IP "\fB\-I\fR\fIdirectory\fR" 4 +.IX Item "-Idirectory" +Add the specified directory to the search path for include files. +.IP "\fB\-F\fR\fIdirectory\fR" 4 +.IX Item "-Fdirectory" +Add the specified directory to the search path for framework include files. +.IP "\fB\-nostdinc\fR" 4 +.IX Item "-nostdinc" +Do not search the standard system directories or compiler builtin directories +for include files. +.IP "\fB\-nostdlibinc\fR" 4 +.IX Item "-nostdlibinc" +Do not search the standard system directories for include files, but do search +compiler builtin include directories. +.IP "\fB\-nobuiltininc\fR" 4 +.IX Item "-nobuiltininc" +Do not search clang's builtin directory for include files. +.SH "ENVIRONMENT" +.IX Header "ENVIRONMENT" +.IP "\fB\s-1TMPDIR\s0\fR, \fB\s-1TEMP\s0\fR, \fB\s-1TMP\s0\fR" 4 +.IX Item "TMPDIR, TEMP, TMP" +These environment variables are checked, in order, for the location to +write temporary files used during the compilation process. +.IP "\fB\s-1CPATH\s0\fR" 4 +.IX Item "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 \fI\s-1PATH\s0\fR +environment variable. +.Sp +Empty components in the environment variable are ignored. +.IP "\fBC_INCLUDE_PATH\fR, \fB\s-1OBJC_INCLUDE_PATH\s0\fR, \fB\s-1CPLUS_INCLUDE_PATH\s0\fR, \fB\s-1OBJCPLUS_INCLUDE_PATH\s0\fR" 4 +.IX Item "C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH" +These environment variables specify additional paths, as for \s-1CPATH\s0, +which are only used when processing the appropriate language. +.IP "\fB\s-1MACOSX_DEPLOYMENT_TARGET\s0\fR" 4 +.IX Item "MACOSX_DEPLOYMENT_TARGET" +If \-mmacosx\-version\-min is unspecified, the default deployment target +is read from this environment variable. This option only affects darwin +targets. +.SH "BUGS" +.IX Header "BUGS" +To report bugs, please visit <http://llvm.org/bugs/>. Most bug reports should +include preprocessed source files (use the \fB\-E\fR option) and the full output of +the compiler, along with information to reproduce. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +.Vb 1 +\& as(1), ld(1) +.Ve +.SH "AUTHOR" +.IX Header "AUTHOR" +Maintained by the Clang / \s-1LLVM\s0 Team (<http://clang.llvm.org>). diff --git a/usr.bin/clang/llc/Makefile b/usr.bin/clang/llc/Makefile new file mode 100644 index 0000000..3606fef --- /dev/null +++ b/usr.bin/clang/llc/Makefile @@ -0,0 +1,48 @@ +# $FreeBSD$ + +PROG_CXX=llc + +SRCDIR= tools/llc +SRCS= llc.cpp + +LIBDEPS=llvmasmparser \ + llvmbitreader \ + llvmarmdisassembler \ + llvmarmasmparser \ + llvmarmcodegen \ + llvmarmdesc \ + llvmarminfo \ + llvmarminstprinter \ + llvmmipsasmparser \ + llvmmipscodegen \ + llvmmipsdesc \ + llvmmipsinstprinter \ + llvmmipsdisassembler \ + llvmmipsinfo \ + llvmpowerpccodegen \ + llvmpowerpcdesc \ + llvmpowerpcinfo \ + llvmpowerpcinstprinter \ + llvmx86asmparser \ + llvmx86codegen \ + llvmselectiondag \ + llvmasmprinter \ + llvmmcparser \ + llvmcodegen \ + llvmscalaropts \ + llvminstcombine \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmx86disassembler \ + llvmx86desc \ + llvmx86info \ + llvmtarget \ + llvmx86instprinter \ + llvmmc \ + llvmobject \ + llvmx86utils \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/llc/llc.1 b/usr.bin/clang/llc/llc.1 new file mode 100644 index 0000000..b7862db --- /dev/null +++ b/usr.bin/clang/llc/llc.1 @@ -0,0 +1,276 @@ +.\" $FreeBSD$ +.TH "LLC" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 \fIfilename\fP is \- or omitted, \fBllc\fP reads from standard input. Otherwise, it +will from \fIfilename\fP. Inputs can be in either the LLVM assembly language +format (.ll) or the LLVM bitcode format (.bc). +.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 \-, +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 \- is specified, +then \fBllc\fP creates the output filename by taking the input filename, +removing any existing \fI.bc\fP extension, and adding a \fI.s\fP suffix. +.sp +Other \fBllc\fP options are as follows: +.SS End\-user Options +.sp +\fB\-help\fP +.INDENT 0.0 +.INDENT 3.5 +Print a summary of command line options. +.UNINDENT +.UNINDENT +.sp +\fB\-O\fP=\fIuint\fP +.INDENT 0.0 +.INDENT 3.5 +Generate code at different optimization levels. These correspond to the \fI\-O0\fP, +\fI\-O1\fP, \fI\-O2\fP, and \fI\-O3\fP optimization levels used by \fBllvm\-gcc\fP and +\fBclang\fP. +.UNINDENT +.UNINDENT +.sp +\fB\-mtriple\fP=\fItarget triple\fP +.INDENT 0.0 +.INDENT 3.5 +Override the target triple specified in the input file with the specified +string. +.UNINDENT +.UNINDENT +.sp +\fB\-march\fP=\fIarch\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-mcpu\fP=\fIcpuname\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-mattr\fP=\fIa1,+a2,\-a3,...\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-\-disable\-fp\-elim\fP +.INDENT 0.0 +.INDENT 3.5 +Disable frame pointer elimination optimization. +.UNINDENT +.UNINDENT +.sp +\fB\-\-disable\-excess\-fp\-precision\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-\-enable\-no\-infs\-fp\-math\fP +.INDENT 0.0 +.INDENT 3.5 +Enable optimizations that assume no Inf values. +.UNINDENT +.UNINDENT +.sp +\fB\-\-enable\-no\-nans\-fp\-math\fP +.INDENT 0.0 +.INDENT 3.5 +Enable optimizations that assume no NAN values. +.UNINDENT +.UNINDENT +.sp +\fB\-\-enable\-unsafe\-fp\-math\fP +.INDENT 0.0 +.INDENT 3.5 +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 fsin on X86). +.UNINDENT +.UNINDENT +.sp +\fB\-\-enable\-correct\-eh\-support\fP +.INDENT 0.0 +.INDENT 3.5 +Instruct the \fBlowerinvoke\fP pass to insert code for correct exception handling +support. This is expensive and is by default omitted for efficiency. +.UNINDENT +.UNINDENT +.sp +\fB\-\-stats\fP +.INDENT 0.0 +.INDENT 3.5 +Print statistics recorded by code\-generation passes. +.UNINDENT +.UNINDENT +.sp +\fB\-\-time\-passes\fP +.INDENT 0.0 +.INDENT 3.5 +Record the amount of time needed for each pass and print a report to standard +error. +.UNINDENT +.UNINDENT +.sp +\fB\-\-load\fP=\fIdso_path\fP +.INDENT 0.0 +.INDENT 3.5 +Dynamically load \fIdso_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 +.UNINDENT +.SS Tuning/Configuration Options +.sp +\fB\-\-print\-machineinstrs\fP +.INDENT 0.0 +.INDENT 3.5 +Print generated machine code between compilation phases (useful for debugging). +.UNINDENT +.UNINDENT +.sp +\fB\-\-regalloc\fP=\fIallocator\fP +.INDENT 0.0 +.INDENT 3.5 +Specify the register allocator to use. The default \fIallocator\fP is \fIlocal\fP. +Valid register allocators are: +.sp +\fIsimple\fP +.INDENT 0.0 +.INDENT 3.5 +Very simple "always spill" register allocator +.UNINDENT +.UNINDENT +.sp +\fIlocal\fP +.INDENT 0.0 +.INDENT 3.5 +Local register allocator +.UNINDENT +.UNINDENT +.sp +\fIlinearscan\fP +.INDENT 0.0 +.INDENT 3.5 +Linear scan global register allocator +.UNINDENT +.UNINDENT +.sp +\fIiterativescan\fP +.INDENT 0.0 +.INDENT 3.5 +Iterative scan global register allocator +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.sp +\fB\-\-spiller\fP=\fIspiller\fP +.INDENT 0.0 +.INDENT 3.5 +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 +\fIspiller\fP is \fIlocal\fP. Valid spillers are: +.sp +\fIsimple\fP +.INDENT 0.0 +.INDENT 3.5 +Simple spiller +.UNINDENT +.UNINDENT +.sp +\fIlocal\fP +.INDENT 0.0 +.INDENT 3.5 +Local spiller +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.SS Intel IA\-32\-specific Options +.sp +\fB\-\-x86\-asm\-syntax=att|intel\fP +.INDENT 0.0 +.INDENT 3.5 +Specify whether to emit assembly code in AT&T syntax (the default) or intel +syntax. +.UNINDENT +.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|lli +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/lli/Makefile b/usr.bin/clang/lli/Makefile new file mode 100644 index 0000000..d6ecab5 --- /dev/null +++ b/usr.bin/clang/lli/Makefile @@ -0,0 +1,39 @@ +# $FreeBSD$ + +PROG_CXX=lli + +SRCDIR= tools/lli +SRCS= lli.cpp \ + RecordingMemoryManager.cpp \ + RemoteTarget.cpp + +LIBDEPS=llvmx86asmparser \ + llvmx86disassembler \ + llvmasmparser \ + llvmbitreader \ + llvmx86codegen \ + llvmx86desc \ + llvmx86info \ + llvmx86instprinter \ + llvmx86utils \ + llvmselectiondag \ + llvmasmprinter \ + llvmmcparser \ + llvminterpreter \ + llvmjit \ + llvmcodegen \ + llvmscalaropts \ + llvminstcombine \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmmcjit \ + llvmruntimedyld \ + llvmexecutionengine \ + llvmtarget \ + llvmmc \ + llvmobject \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/lli/lli.1 b/usr.bin/clang/lli/lli.1 new file mode 100644 index 0000000..e018a95 --- /dev/null +++ b/usr.bin/clang/lli/lli.1 @@ -0,0 +1,326 @@ +.\" $FreeBSD$ +.TH "LLI" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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, if one is +available for the current architecture, or an interpreter. \fBlli\fP takes all of +the same code generator options as llc|llc, but they are only effective when +\fBlli\fP is using the just\-in\-time compiler. +.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 +.sp +\fB\-fake\-argv0\fP=\fIexecutable\fP +.INDENT 0.0 +.INDENT 3.5 +Override the \fBargv[0]\fP value passed into the executing program. +.UNINDENT +.UNINDENT +.sp +\fB\-force\-interpreter\fP=\fI{false,true}\fP +.INDENT 0.0 +.INDENT 3.5 +If set to true, use the interpreter even if a just\-in\-time compiler is available +for this architecture. Defaults to false. +.UNINDENT +.UNINDENT +.sp +\fB\-help\fP +.INDENT 0.0 +.INDENT 3.5 +Print a summary of command line options. +.UNINDENT +.UNINDENT +.sp +\fB\-load\fP=\fIpuginfilename\fP +.INDENT 0.0 +.INDENT 3.5 +Causes \fBlli\fP to load the plugin (shared object) named \fIpluginfilename\fP and use +it for optimization. +.UNINDENT +.UNINDENT +.sp +\fB\-stats\fP +.INDENT 0.0 +.INDENT 3.5 +Print statistics from the code\-generation passes. This is only meaningful for +the just\-in\-time compiler, at present. +.UNINDENT +.UNINDENT +.sp +\fB\-time\-passes\fP +.INDENT 0.0 +.INDENT 3.5 +Record the amount of time needed for each code\-generation pass and print it to +standard error. +.UNINDENT +.UNINDENT +.sp +\fB\-version\fP +.INDENT 0.0 +.INDENT 3.5 +Print out the version of \fBlli\fP and exit without doing anything else. +.UNINDENT +.UNINDENT +.SH TARGET OPTIONS +.sp +\fB\-mtriple\fP=\fItarget triple\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-march\fP=\fIarch\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-mcpu\fP=\fIcpuname\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-mattr\fP=\fIa1,+a2,\-a3,...\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.SH FLOATING POINT OPTIONS +.sp +\fB\-disable\-excess\-fp\-precision\fP +.INDENT 0.0 +.INDENT 3.5 +Disable optimizations that may increase floating point precision. +.UNINDENT +.UNINDENT +.sp +\fB\-enable\-no\-infs\-fp\-math\fP +.INDENT 0.0 +.INDENT 3.5 +Enable optimizations that assume no Inf values. +.UNINDENT +.UNINDENT +.sp +\fB\-enable\-no\-nans\-fp\-math\fP +.INDENT 0.0 +.INDENT 3.5 +Enable optimizations that assume no NAN values. +.UNINDENT +.UNINDENT +.sp +\fB\-enable\-unsafe\-fp\-math\fP +.INDENT 0.0 +.INDENT 3.5 +Causes \fBlli\fP to enable optimizations that may decrease floating point +precision. +.UNINDENT +.UNINDENT +.sp +\fB\-soft\-float\fP +.INDENT 0.0 +.INDENT 3.5 +Causes \fBlli\fP to generate software floating point library calls instead of +equivalent hardware instructions. +.UNINDENT +.UNINDENT +.SH CODE GENERATION OPTIONS +.sp +\fB\-code\-model\fP=\fImodel\fP +.INDENT 0.0 +.INDENT 3.5 +Choose the code model from: +.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 +.sp +\fB\-disable\-post\-RA\-scheduler\fP +.INDENT 0.0 +.INDENT 3.5 +Disable scheduling after register allocation. +.UNINDENT +.UNINDENT +.sp +\fB\-disable\-spill\-fusing\fP +.INDENT 0.0 +.INDENT 3.5 +Disable fusing of spill code into instructions. +.UNINDENT +.UNINDENT +.sp +\fB\-enable\-correct\-eh\-support\fP +.INDENT 0.0 +.INDENT 3.5 +Make the \-lowerinvoke pass insert expensive, but correct, EH code. +.UNINDENT +.UNINDENT +.sp +\fB\-jit\-enable\-eh\fP +.INDENT 0.0 +.INDENT 3.5 +Exception handling should be enabled in the just\-in\-time compiler. +.UNINDENT +.UNINDENT +.sp +\fB\-join\-liveintervals\fP +.INDENT 0.0 +.INDENT 3.5 +Coalesce copies (default=true). +.UNINDENT +.UNINDENT +.sp +\fB\-nozero\-initialized\-in\-bss\fP Don\(aqt place zero\-initialized symbols into the BSS section. +.sp +\fB\-pre\-RA\-sched\fP=\fIscheduler\fP +.INDENT 0.0 +.INDENT 3.5 +Instruction schedulers available (before register allocation): +.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 +.sp +\fB\-regalloc\fP=\fIallocator\fP +.INDENT 0.0 +.INDENT 3.5 +Register allocator to use (default=linearscan) +.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 +.sp +\fB\-relocation\-model\fP=\fImodel\fP +.INDENT 0.0 +.INDENT 3.5 +Choose relocation model from: +.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 +.sp +\fB\-spiller\fP +.INDENT 0.0 +.INDENT 3.5 +Spiller to use (default=local) +.sp +.nf +.ft C +=simple: simple spiller +=local: local spiller +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fB\-x86\-asm\-syntax\fP=\fIsyntax\fP +.INDENT 0.0 +.INDENT 3.5 +Choose style of code to emit from X86 backend: +.sp +.nf +.ft C +=att: Emit AT&T\-style assembly +=intel: Emit Intel\-style assembly +.ft P +.fi +.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 +llc|llc +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, 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 0000000..97ad058 --- /dev/null +++ b/usr.bin/clang/llvm-ar/Makefile @@ -0,0 +1,14 @@ +# $FreeBSD$ + +PROG_CXX=llvm-ar + +SRCDIR= tools/llvm-ar +SRCS= llvm-ar.cpp +LLVM_REQUIRES_EH= + +LIBDEPS=llvmarchive \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..84a978f --- /dev/null +++ b/usr.bin/clang/llvm-ar/llvm-ar.1 @@ -0,0 +1,484 @@ +.\" $FreeBSD$ +.TH "LLVM-AR" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 both SVR4 and BSD style archive +files. However, it cannot be used to write them. While the \fBllvm\-ar\fP command +produces files that are \fIalmost\fP identical to the format used by other \fBar\fP +implementations, it has two significant departures in order to make the +archive appropriate for LLVM. The first departure is that \fBllvm\-ar\fP only +uses BSD4.4 style long path names (stored immediately after the header) and +never contains a string table for long names. The second departure is that the +symbol table is formated for efficient construction of an in\-memory data +structure that permits rapid (red\-black tree) lookups. Consequently, archives +produced with \fBllvm\-ar\fP usually won\(aqt be readable or editable with any +\fBar\fP implementation or useful for linking. Using the \fBf\fP modifier to flatten +file names will make the archive readable by other \fBar\fP implementations +but not for linking because the symbol table format for LLVM is unique. 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 LLVM format. This +means that the string table will be dropped (in deference to BSD 4.4 long names) +and an LLVM symbol table will be added (by default). The system symbol table +will be retained. +.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 is intended to archive bitcode files, the symbol table +won\(aqt make much sense to anything but LLVM. Consequently, the symbol table\(aqs +format has been simplified. It consists simply of a sequence of pairs +of a file member index number as an LSB 4byte integer and a null\-terminated +string. +.UNINDENT +.UNINDENT +.sp +\fILong Paths\fP +.INDENT 0.0 +.INDENT 3.5 +Some \fBar\fP implementations (SVR4) use a separate file member to record long +path names (> 15 characters). \fBllvm\-ar\fP takes the BSD 4.4 and Mac OS X +approach which is to simply store the full path name immediately preceding +the data for the file. The path name is null terminated and may contain the +slash (/) character. +.UNINDENT +.UNINDENT +.sp +\fIDirectory Recursion\fP +.INDENT 0.0 +.INDENT 3.5 +Most \fBar\fP implementations do not recurse through directories but simply +ignore directories if they are presented to the program in the \fIfiles\fP +option. \fBllvm\-ar\fP, however, can recurse through directory structures and +add all the files under a directory, if requested. +.UNINDENT +.UNINDENT +.sp +\fITOC Verbose Output\fP +.INDENT 0.0 +.INDENT 3.5 +When \fBllvm\-ar\fP prints out the verbose table of contents (\fBtv\fP option), it +precedes the usual output with a character indicating the basic kind of +content in the file. A blank means the file is a regular file. A \(aqB\(aq means +the file is an LLVM bitcode file. An \(aqS\(aq means the file is the symbol table. +.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[k] +.INDENT 0.0 +.INDENT 3.5 +Print files to the standard output. The \fIk\fP modifier applies to this +operation. 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[Rf] +.INDENT 0.0 +.INDENT 3.5 +Quickly append files to the end of the archive. The \fIR\fP, and \fIf\fP +modifiers apply to this operation. 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[Rabfu] +.INDENT 0.0 +.INDENT 3.5 +Replace or insert file members. The \fIR\fP, \fIa\fP, \fIb\fP, \fIf\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 +[f] +.INDENT 0.0 +.INDENT 3.5 +Normally, \fBllvm\-ar\fP stores the full path name to a file as presented to it on +the command line. With this option, truncated (15 characters max) names are +used. This ensures name compatibility with older versions of \fBar\fP but may also +thwart correct extraction of the files (duplicates may overwrite). If used with +the \fIR\fP option, the directory recursion will be performed but the file names +will all be flattened to simple file names. +.UNINDENT +.UNINDENT +.sp +[i] +.INDENT 0.0 +.INDENT 3.5 +A synonym for the \fIb\fP option. +.UNINDENT +.UNINDENT +.sp +[k] +.INDENT 0.0 +.INDENT 3.5 +Normally, \fBllvm\-ar\fP will not print the contents of bitcode files when the +\fIp\fP operation is used. This modifier defeats the default and allows the +bitcode members to be printed. +.UNINDENT +.UNINDENT +.sp +[N] +.INDENT 0.0 +.INDENT 3.5 +This option is ignored by \fBllvm\-ar\fP but provided for compatibility. +.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 +[P] +.INDENT 0.0 +.INDENT 3.5 +use full path names when matching +.UNINDENT +.UNINDENT +.sp +[R] +.INDENT 0.0 +.INDENT 3.5 +This modifier instructions the \fIr\fP option to recursively process directories. +Without \fIR\fP, directories are ignored and only those \fIfiles\fP that refer to +files will be added to the archive. When \fIR\fP is used, any directories specified +with \fIfiles\fP will be scanned (recursively) to find files to be added to the +archive. Any file whose name begins with a dot will not be added. +.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. Using this modifier is more efficient that using +llvm\-ranlib|llvm\-ranlib which also creates the symbol table. +.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 +The LLVM symbol table has the special name "#_LLVM_SYM_TAB_#". It is presumed +that no regular archive member file will want this name. The LLVM symbol table +is simply composed of a sequence of triplets: byte offset, length of symbol, +and the symbol itself. Symbols are not null or newline terminated. Here are +the details on each of these items: +.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 +llvm\-ranlib|llvm\-ranlib, ar(1) +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, 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 0000000..7e90878 --- /dev/null +++ b/usr.bin/clang/llvm-as/Makefile @@ -0,0 +1,14 @@ +# $FreeBSD$ + +PROG_CXX=llvm-as + +SRCDIR= tools/llvm-as +SRCS= llvm-as.cpp +LLVM_REQUIRES_EH= + +LIBDEPS=llvmbitwriter \ + llvmasmparser \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..82e13bc --- /dev/null +++ b/usr.bin/clang/llvm-as/llvm-as.1 @@ -0,0 +1,87 @@ +.\" $FreeBSD$ +.TH "LLVM-AS" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 +2012, 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 0000000..27788cc --- /dev/null +++ b/usr.bin/clang/llvm-bcanalyzer/Makefile @@ -0,0 +1,13 @@ +# $FreeBSD$ + +PROG_CXX=llvm-bcanalyzer + +SRCDIR= tools/llvm-bcanalyzer +SRCS= llvm-bcanalyzer.cpp +LLVM_REQUIRES_EH= + +LIBDEPS=llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..8611eec --- /dev/null +++ b/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 @@ -0,0 +1,483 @@ +.\" $FreeBSD$ +.TH "LLVM-BCANALYZER" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 +.sp +\fB\-nodetails\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-dump\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-verify\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-help\fP +.INDENT 0.0 +.INDENT 3.5 +Print a summary of command line options. +.UNINDENT +.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 +llvm\-dis|llvm\-dis, \fI\%http://llvm.org/docs/BitCodeFormat.html\fP +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-diff/Makefile b/usr.bin/clang/llvm-diff/Makefile new file mode 100644 index 0000000..aedaff0 --- /dev/null +++ b/usr.bin/clang/llvm-diff/Makefile @@ -0,0 +1,16 @@ +# $FreeBSD$ + +PROG_CXX=llvm-diff + +SRCDIR= tools/llvm-diff +SRCS= llvm-diff.cpp \ + DiffConsumer.cpp \ + DiffLog.cpp \ + DifferenceEngine.cpp + +LIBDEPS=llvmbitreader \ + llvmasmparser \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..21586ef --- /dev/null +++ b/usr.bin/clang/llvm-diff/llvm-diff.1 @@ -0,0 +1,77 @@ +.\" $FreeBSD$ +.TH "LLVM-DIFF" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 +2012, 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 0000000..d6e0157 --- /dev/null +++ b/usr.bin/clang/llvm-dis/Makefile @@ -0,0 +1,18 @@ +# $FreeBSD$ + +PROG_CXX=llvm-dis + +SRCDIR= tools/llvm-dis +SRCS= llvm-dis.cpp +LLVM_REQUIRES_EH= + +TGHDRS= Intrinsics +LIBDEPS=llvmanalysis \ + llvmtarget \ + llvmmc \ + llvmobject \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..28363b7 --- /dev/null +++ b/usr.bin/clang/llvm-dis/llvm-dis.1 @@ -0,0 +1,88 @@ +.\" $FreeBSD$ +.TH "LLVM-DIS" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 +2012, 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 0000000..7489dd6 --- /dev/null +++ b/usr.bin/clang/llvm-extract/Makefile @@ -0,0 +1,24 @@ +# $FreeBSD$ + +PROG_CXX=llvm-extract + +SRCDIR= tools/llvm-extract +SRCS= llvm-extract.cpp + +LIBDEPS=llvmasmparser \ + llvmbitwriter \ + llvmbitreader \ + llvmipo \ + llvmvectorize \ + llvmscalaropts \ + llvminstcombine \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmtarget \ + llvmmc \ + llvmobject \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..fec5f07 --- /dev/null +++ b/usr.bin/clang/llvm-extract/llvm-extract.1 @@ -0,0 +1,128 @@ +.\" $FreeBSD$ +.TH "LLVM-EXTRACT" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 \-. 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|bugpoint +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, 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 0000000..bcd6a51 --- /dev/null +++ b/usr.bin/clang/llvm-link/Makefile @@ -0,0 +1,22 @@ +# $FreeBSD$ + +PROG_CXX=llvm-link + +SRCDIR= tools/llvm-link +SRCS= llvm-link.cpp + +LIBDEPS=llvmasmparser \ + llvmbitwriter \ + llvmlinker \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmtarget \ + llvmmc \ + llvmobject \ + llvmarchive \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..67e4cb7 --- /dev/null +++ b/usr.bin/clang/llvm-link/llvm-link.1 @@ -0,0 +1,119 @@ +.\" $FreeBSD$ +.TH "LLVM-LINK" "1" "2012-08-16" "3.2" "LLVM" +.SH NAME +llvm-link \- LLVM 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 +.. +.\" Man page generated from reStructuredText. +. +.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. +.sp +\fBllvm\-link\fP attempts to load the input files from the current directory. If +that fails, it looks for each file in each of the directories specified by the +\fB\-L\fP options on the command line. The library search paths are global; each +one is searched for every input file if necessary. The directories are searched +in the order they were specified on the command line. +.SH OPTIONS +.sp +\fB\-L\fP \fIdirectory\fP +.INDENT 0.0 +.INDENT 3.5 +Add the specified \fIdirectory\fP to the library search path. When looking for +libraries, \fBllvm\-link\fP will look in path name for libraries. This option can be +specified multiple times; \fBllvm\-link\fP will search inside these directories in +the order in which they were specified on the command line. +.UNINDENT +.UNINDENT +.sp +\fB\-f\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-o\fP \fIfilename\fP +.INDENT 0.0 +.INDENT 3.5 +Specify the output file name. If \fIfilename\fP is \fB\-\fP, then \fBllvm\-link\fP will +write 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 +.sp +\fB\-d\fP +.INDENT 0.0 +.INDENT 3.5 +If specified, \fBllvm\-link\fP prints a human\-readable version of the output +bitcode file to standard error. +.UNINDENT +.UNINDENT +.sp +\fB\-help\fP +.INDENT 0.0 +.INDENT 3.5 +Print a summary of command line options. +.UNINDENT +.UNINDENT +.sp +\fB\-v\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.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 SEE ALSO +.sp +gccld|gccld +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-mc/Makefile b/usr.bin/clang/llvm-mc/Makefile new file mode 100644 index 0000000..c2106e1 --- /dev/null +++ b/usr.bin/clang/llvm-mc/Makefile @@ -0,0 +1,49 @@ +# $FreeBSD$ + +PROG_CXX=llvm-mc +NO_MAN= + +SRCDIR= tools/llvm-mc +SRCS= llvm-mc.cpp \ + Disassembler.cpp + +LIBDEPS=llvmmcdisassembler \ + llvmarmdisassembler \ + llvmarmasmparser \ + llvmarmcodegen \ + llvmarmdesc \ + llvmarminfo \ + llvmarminstprinter \ + llvmmipsasmparser \ + llvmmipscodegen \ + llvmmipsdesc \ + llvmmipsinstprinter \ + llvmmipsdisassembler \ + llvmmipsinfo \ + llvmpowerpccodegen \ + llvmpowerpcdesc \ + llvmpowerpcinfo \ + llvmpowerpcinstprinter \ + llvmx86asmparser \ + llvmx86codegen \ + llvmselectiondag \ + llvmasmprinter \ + llvmmcparser \ + llvmcodegen \ + llvmscalaropts \ + llvminstcombine \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmx86disassembler \ + llvmx86desc \ + llvmx86info \ + llvmtarget \ + llvmx86instprinter \ + llvmmc \ + llvmobject \ + llvmx86utils \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/llvm-nm/Makefile b/usr.bin/clang/llvm-nm/Makefile new file mode 100644 index 0000000..1ac3a3d --- /dev/null +++ b/usr.bin/clang/llvm-nm/Makefile @@ -0,0 +1,14 @@ +# $FreeBSD$ + +PROG_CXX=llvm-nm + +SRCDIR= tools/llvm-nm +SRCS= llvm-nm.cpp + +LIBDEPS=llvmobject \ + llvmarchive \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" 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 0000000..8df8f3f --- /dev/null +++ b/usr.bin/clang/llvm-nm/llvm-nm.1 @@ -0,0 +1,213 @@ +.\" $FreeBSD$ +.TH "LLVM-NM" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 a LLVM bitcode file, even symbols which are defined in the bitcode +file. +.SH OPTIONS +.INDENT 0.0 +.TP +.B \-B (default) +Use BSD output format. Alias for \fI\-\-format=bsd\fP. +.UNINDENT +.INDENT 0.0 +.TP +.B \-P +Use POSIX.2 output format. Alias for \fI\-\-format=posix\fP. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-debug\-syms, \-a +Show all symbols, even debugger only. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-defined\-only +Print only symbols defined in this file (as opposed to +symbols which may be referenced by objects in this file, but not +defined in this file.) +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-dynamic, \-D +Display dynamic symbols instead of normal symbols. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-extern\-only, \-g +Print only symbols whose definitions are external; that is, accessible +from other files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-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|llvm\-dis, ar(1), nm(1) +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, 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 0000000..38d23ae --- /dev/null +++ b/usr.bin/clang/llvm-objdump/Makefile @@ -0,0 +1,51 @@ +# $FreeBSD$ + +PROG_CXX=llvm-objdump +NO_MAN= + +SRCDIR= tools/llvm-objdump +SRCS= llvm-objdump.cpp \ + MachODump.cpp \ + MCFunction.cpp \ + +LIBDEPS=llvmmcdisassembler \ + llvmdebuginfo \ + llvmarmdisassembler \ + llvmarmasmparser \ + llvmarmcodegen \ + llvmarmdesc \ + llvmarminfo \ + llvmarminstprinter \ + llvmmipsasmparser \ + llvmmipscodegen \ + llvmmipsdesc \ + llvmmipsinstprinter \ + llvmmipsdisassembler \ + llvmmipsinfo \ + llvmpowerpccodegen \ + llvmpowerpcdesc \ + llvmpowerpcinfo \ + llvmpowerpcinstprinter \ + llvmx86asmparser \ + llvmx86codegen \ + llvmselectiondag \ + llvmasmprinter \ + llvmmcparser \ + llvmcodegen \ + llvmscalaropts \ + llvminstcombine \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmx86disassembler \ + llvmx86desc \ + llvmx86info \ + llvmtarget \ + llvmx86instprinter \ + llvmmc \ + llvmobject \ + llvmx86utils \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/llvm-prof/Makefile b/usr.bin/clang/llvm-prof/Makefile new file mode 100644 index 0000000..b7b29cd --- /dev/null +++ b/usr.bin/clang/llvm-prof/Makefile @@ -0,0 +1,16 @@ +# $FreeBSD$ + +PROG_CXX=llvm-prof + +SRCDIR= tools/llvm-prof +SRCS= llvm-prof.cpp + +LIBDEPS=llvmanalysis \ + llvmtarget \ + llvmmc \ + llvmobject \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/llvm-prof/llvm-prof.1 b/usr.bin/clang/llvm-prof/llvm-prof.1 new file mode 100644 index 0000000..fd34cd7 --- /dev/null +++ b/usr.bin/clang/llvm-prof/llvm-prof.1 @@ -0,0 +1,86 @@ +.\" $FreeBSD$ +.TH "LLVM-PROF" "1" "2012-08-16" "3.2" "LLVM" +.SH NAME +llvm-prof \- print execution profile of LLVM program +. +.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 +.. +.\" Man page generated from reStructuredText. +. +.SH SYNOPSIS +.sp +\fBllvm\-prof\fP [\fIoptions\fP] [\fIbitcode file\fP] [\fIllvmprof.out\fP] +.SH DESCRIPTION +.sp +The \fBllvm\-prof\fP tool reads in an \fIllvmprof.out\fP file (which can +optionally use a specific file with the third program argument), a bitcode file +for the program, and produces a human readable report, suitable for determining +where the program hotspots are. +.sp +This program is often used in conjunction with the \fIutils/profile.pl\fP +script. This script automatically instruments a program, runs it with the JIT, +then runs \fBllvm\-prof\fP to format a report. To get more information about +\fIutils/profile.pl\fP, execute it with the \fB\-help\fP option. +.SH OPTIONS +.sp +\fB\-\-annotated\-llvm\fP or \fB\-A\fP +.INDENT 0.0 +.INDENT 3.5 +In addition to the normal report printed, print out the code for the +program, annotated with execution frequency information. This can be +particularly useful when trying to visualize how frequently basic blocks +are executed. This is most useful with basic block profiling +information or better. +.UNINDENT +.UNINDENT +.sp +\fB\-\-print\-all\-code\fP +.INDENT 0.0 +.INDENT 3.5 +Using this option enables the \fB\-\-annotated\-llvm\fP option, but it +prints the entire module, instead of just the most commonly executed +functions. +.UNINDENT +.UNINDENT +.sp +\fB\-\-time\-passes\fP +.INDENT 0.0 +.INDENT 3.5 +Record the amount of time needed for each pass and print it to standard +error. +.UNINDENT +.UNINDENT +.SH EXIT STATUS +.sp +\fBllvm\-prof\fP returns 1 if it cannot load the bitcode file or the profile +information. Otherwise, it exits with zero. +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/llvm-ranlib/Makefile b/usr.bin/clang/llvm-ranlib/Makefile new file mode 100644 index 0000000..80e495c --- /dev/null +++ b/usr.bin/clang/llvm-ranlib/Makefile @@ -0,0 +1,14 @@ +# $FreeBSD$ + +PROG_CXX=llvm-ranlib + +SRCDIR= tools/llvm-ranlib +SRCS= llvm-ranlib.cpp +LLVM_REQUIRES_EH= + +LIBDEPS=llvmarchive \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/llvm-ranlib/llvm-ranlib.1 b/usr.bin/clang/llvm-ranlib/llvm-ranlib.1 new file mode 100644 index 0000000..60ada02 --- /dev/null +++ b/usr.bin/clang/llvm-ranlib/llvm-ranlib.1 @@ -0,0 +1,80 @@ +.\" $FreeBSD$ +.TH "LLVM-RANLIB" "1" "2012-08-16" "3.2" "LLVM" +.SH NAME +llvm-ranlib \- Generate index for LLVM archive +. +.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 +.. +.\" Man page generated from reStructuredText. +. +.SH SYNOPSIS +.sp +\fBllvm\-ranlib\fP [\-\-version] [\-help] <archive\-file> +.SH DESCRIPTION +.sp +The \fBllvm\-ranlib\fP command is similar to the common Unix utility, \fBranlib\fP. It +adds or updates the symbol table in an LLVM archive file. Note that using the +\fBllvm\-ar\fP modifier \fIs\fP is usually more efficient than running \fBllvm\-ranlib\fP +which is only provided only for completness and compatibility. Unlike other +implementations of \fBranlib\fP, \fBllvm\-ranlib\fP indexes LLVM bitcode files, not +native object modules. You can list the contents of the symbol table with the +\fBllvm\-nm \-s\fP command. +.SH OPTIONS +.sp +\fIarchive\-file\fP +.INDENT 0.0 +.INDENT 3.5 +Specifies the archive\-file to which the symbol table is added or updated. +.UNINDENT +.UNINDENT +.sp +\fI\-\-version\fP +.INDENT 0.0 +.INDENT 3.5 +Print the version of \fBllvm\-ranlib\fP and exit without building a symbol table. +.UNINDENT +.UNINDENT +.sp +\fI\-help\fP +.INDENT 0.0 +.INDENT 3.5 +Print usage help for \fBllvm\-ranlib\fP and exit without building a symbol table. +.UNINDENT +.UNINDENT +.SH EXIT STATUS +.sp +If \fBllvm\-ranlib\fP succeeds, it will exit with 0. If an error occurs, a non\-zero +exit code will be returned. +.SH SEE ALSO +.sp +llvm\-ar|llvm\-ar, ranlib(1) +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2012, 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 0000000..e899d70 --- /dev/null +++ b/usr.bin/clang/llvm-rtdyld/Makefile @@ -0,0 +1,50 @@ +# $FreeBSD$ + +PROG_CXX=llvm-rtdyld +NO_MAN= + +SRCDIR= tools/llvm-rtdyld +SRCS= llvm-rtdyld.cpp + +LIBDEPS=llvmjit \ + llvmexecutionengine \ + llvmruntimedyld \ + llvmarmdisassembler \ + llvmarmasmparser \ + llvmarmcodegen \ + llvmarmdesc \ + llvmarminfo \ + llvmarminstprinter \ + llvmmipsasmparser \ + llvmmipscodegen \ + llvmmipsdesc \ + llvmmipsinstprinter \ + llvmmipsdisassembler \ + llvmmipsinfo \ + llvmpowerpccodegen \ + llvmpowerpcdesc \ + llvmpowerpcinfo \ + llvmpowerpcinstprinter \ + llvmx86asmparser \ + llvmx86codegen \ + llvmselectiondag \ + llvmasmprinter \ + llvmmcparser \ + llvmcodegen \ + llvmscalaropts \ + llvminstcombine \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmx86disassembler \ + llvmx86desc \ + llvmx86info \ + llvmtarget \ + llvmx86instprinter \ + llvmmc \ + llvmobject \ + llvmx86utils \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/macho-dump/Makefile b/usr.bin/clang/macho-dump/Makefile new file mode 100644 index 0000000..cb170d6 --- /dev/null +++ b/usr.bin/clang/macho-dump/Makefile @@ -0,0 +1,12 @@ +# $FreeBSD$ + +PROG_CXX=macho-dump +NO_MAN= + +SRCDIR= tools/macho-dump +SRCS= macho-dump.cpp + +LIBDEPS=llvmobject \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/opt/Makefile b/usr.bin/clang/opt/Makefile new file mode 100644 index 0000000..5afd58d --- /dev/null +++ b/usr.bin/clang/opt/Makefile @@ -0,0 +1,56 @@ +# $FreeBSD$ + +PROG_CXX=opt + +SRCDIR= tools/opt +SRCS= AnalysisWrappers.cpp \ + GraphPrinters.cpp \ + PrintSCC.cpp \ + opt.cpp + +TGHDRS= Intrinsics +LIBDEPS=llvmarmdisassembler \ + llvmarmasmparser \ + llvmarmcodegen \ + llvmarmdesc \ + llvmarminfo \ + llvmarminstprinter \ + llvmmipsasmparser \ + llvmmipscodegen \ + llvmmipsdesc \ + llvmmipsinstprinter \ + llvmmipsdisassembler \ + llvmmipsinfo \ + llvmpowerpccodegen \ + llvmpowerpcdesc \ + llvmpowerpcinfo \ + llvmpowerpcinstprinter \ + llvmx86asmparser \ + llvmx86codegen \ + llvmselectiondag \ + llvmasmprinter \ + llvmmcparser \ + llvmcodegen \ + llvmx86disassembler \ + llvmx86desc \ + llvmx86info \ + llvmx86instprinter \ + llvmx86utils \ + llvmipo \ + llvmvectorize \ + llvmscalaropts \ + llvminstcombine \ + llvminstrumentation \ + llvmtransformutils \ + llvmipa \ + llvmanalysis \ + llvmtarget \ + llvmmc \ + llvmobject \ + llvmasmparser \ + llvmbitwriter \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/opt/opt.1 b/usr.bin/clang/opt/opt.1 new file mode 100644 index 0000000..a69bb65 --- /dev/null +++ b/usr.bin/clang/opt/opt.1 @@ -0,0 +1,219 @@ +.\" $FreeBSD$ +.TH "OPT" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.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 \fB\-load\fP option. Use the \fB\-help\fP option to determine +what optimizations you can use. +.sp +If \fIfilename\fP is omitted from the command line or is \fI\-\fP, \fBopt\fP reads its +input from standard input. Inputs can be in either the LLVM assembly language +format (.ll) or the LLVM bitcode format (.bc). +.sp +If an output filename is not specified with the \fB\-o\fP option, \fBopt\fP +writes its output to the standard output. +.SH OPTIONS +.sp +\fB\-f\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.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. +.UNINDENT +.UNINDENT +.sp +\fB\-S\fP +.INDENT 0.0 +.INDENT 3.5 +Write output in LLVM intermediate language (instead of bitcode). +.UNINDENT +.UNINDENT +.sp +\fB\-{passname}\fP +.INDENT 0.0 +.INDENT 3.5 +\fBopt\fP provides the ability to run any of LLVM\(aqs optimization or analysis passes +in any order. The \fB\-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 +.UNINDENT +.sp +\fB\-std\-compile\-opts\fP +.INDENT 0.0 +.INDENT 3.5 +This is short hand for a standard list of \fIcompile time optimization\fP passes. +This is typically used to optimize the output from the llvm\-gcc front end. It +might be useful for other front end compilers as well. To discover the full set +of options available, use the following command: +.sp +.nf +.ft C +llvm\-as < /dev/null | opt \-std\-compile\-opts \-disable\-output \-debug\-pass=Arguments +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fB\-disable\-inlining\fP +.INDENT 0.0 +.INDENT 3.5 +This option is only meaningful when \fB\-std\-compile\-opts\fP is given. It simply +removes the inlining pass from the standard list. +.UNINDENT +.UNINDENT +.sp +\fB\-disable\-opt\fP +.INDENT 0.0 +.INDENT 3.5 +This option is only meaningful when \fB\-std\-compile\-opts\fP is given. It disables +most, but not all, of the \fB\-std\-compile\-opts\fP. The ones that remain are +\fB\-verify\fP, \fB\-lower\-setjmp\fP, and \fB\-funcresolve\fP. +.UNINDENT +.UNINDENT +.sp +\fB\-strip\-debug\fP +.INDENT 0.0 +.INDENT 3.5 +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 +.UNINDENT +.sp +\fB\-verify\-each\fP +.INDENT 0.0 +.INDENT 3.5 +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. The combination of \fB\-std\-compile\-opts\fP and \fB\-verify\-each\fP +can quickly track down this kind of problem. +.UNINDENT +.UNINDENT +.sp +\fB\-profile\-info\-file\fP \fIfilename\fP +.INDENT 0.0 +.INDENT 3.5 +Specify the name of the file loaded by the \-profile\-loader option. +.UNINDENT +.UNINDENT +.sp +\fB\-stats\fP +.INDENT 0.0 +.INDENT 3.5 +Print statistics. +.UNINDENT +.UNINDENT +.sp +\fB\-time\-passes\fP +.INDENT 0.0 +.INDENT 3.5 +Record the amount of time needed for each pass and print it to standard +error. +.UNINDENT +.UNINDENT +.sp +\fB\-debug\fP +.INDENT 0.0 +.INDENT 3.5 +If this is a debug build, this option will enable debug printouts +from passes which use the \fIDEBUG()\fP macro. See the \fBLLVM Programmer\(aqs +Manual\fP, section \fI#DEBUG\fP for more information. +.UNINDENT +.UNINDENT +.sp +\fB\-load\fP=\fIplugin\fP +.INDENT 0.0 +.INDENT 3.5 +Load the dynamic object \fIplugin\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 \fB\-help\fP and \fB\-load\fP options together. For example: +.sp +.nf +.ft C +opt \-load=plugin.so \-help +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fB\-p\fP +.INDENT 0.0 +.INDENT 3.5 +Print module after each transformation. +.UNINDENT +.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 +2012, LLVM Project +.\" Generated by docutils manpage writer. +. diff --git a/usr.bin/clang/tblgen/Makefile b/usr.bin/clang/tblgen/Makefile new file mode 100644 index 0000000..90a5789 --- /dev/null +++ b/usr.bin/clang/tblgen/Makefile @@ -0,0 +1,43 @@ +# $FreeBSD$ + +PROG_CXX=tblgen + +SRCDIR= utils/TableGen +SRCS= AsmMatcherEmitter.cpp \ + AsmWriterEmitter.cpp \ + AsmWriterInst.cpp \ + CallingConvEmitter.cpp \ + CodeEmitterGen.cpp \ + CodeGenDAGPatterns.cpp \ + CodeGenInstruction.cpp \ + CodeGenMapTable.cpp \ + CodeGenRegisters.cpp \ + CodeGenSchedule.cpp \ + CodeGenTarget.cpp \ + DAGISelEmitter.cpp \ + DAGISelMatcher.cpp \ + DAGISelMatcherEmitter.cpp \ + DAGISelMatcherGen.cpp \ + DAGISelMatcherOpt.cpp \ + DFAPacketizerEmitter.cpp \ + DisassemblerEmitter.cpp \ + EDEmitter.cpp \ + FastISelEmitter.cpp \ + FixedLenDecoderEmitter.cpp \ + InstrInfoEmitter.cpp \ + IntrinsicEmitter.cpp \ + PseudoLoweringEmitter.cpp \ + RegisterInfoEmitter.cpp \ + SetTheory.cpp \ + SubtargetEmitter.cpp \ + TGValueTypes.cpp \ + TableGen.cpp \ + X86DisassemblerTables.cpp \ + X86ModRMFilters.cpp \ + X86RecognizableInstr.cpp +LLVM_REQUIRES_EH= + +LIBDEPS=llvmtablegen \ + llvmsupport + +.include "../clang.prog.mk" diff --git a/usr.bin/clang/tblgen/tblgen.1 b/usr.bin/clang/tblgen/tblgen.1 new file mode 100644 index 0000000..d6d127e --- /dev/null +++ b/usr.bin/clang/tblgen/tblgen.1 @@ -0,0 +1,230 @@ +.\" $FreeBSD$ +.TH "TBLGEN" "1" "2012-08-16" "3.2" "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 +.. +.\" Man page generated from reStructuredText. +. +.SH SYNOPSIS +.sp +\fBtblgen\fP [\fIoptions\fP] [\fIfilename\fP] +.SH DESCRIPTION +.sp +\fBtblgen\fP translates from target description (.td) 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 \fICodeGeneration\fP page in the LLVM documentation. +.sp +The \fIfilename\fP argument specifies the name of a Target Description (.td) file +to read as input. +.SH OPTIONS +.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 \fB\-\fP, then \fBtblgen\fP +sends its output to standard output. +.UNINDENT +.UNINDENT +.sp +\fB\-I\fP \fIdirectory\fP +.INDENT 0.0 +.INDENT 3.5 +Specify where to find other target description files for inclusion. The +\fIdirectory\fP value should be a full or partial path to a directory that contains +target description files. +.UNINDENT +.UNINDENT +.sp +\fB\-asmparsernum\fP \fIN\fP +.INDENT 0.0 +.INDENT 3.5 +Make \-gen\-asm\-parser emit assembly writer number \fIN\fP. +.UNINDENT +.UNINDENT +.sp +\fB\-asmwriternum\fP \fIN\fP +.INDENT 0.0 +.INDENT 3.5 +Make \-gen\-asm\-writer emit assembly writer number \fIN\fP. +.UNINDENT +.UNINDENT +.sp +\fB\-class\fP \fIclass Name\fP +.INDENT 0.0 +.INDENT 3.5 +Print the enumeration list for this class. +.UNINDENT +.UNINDENT +.sp +\fB\-print\-records\fP +.INDENT 0.0 +.INDENT 3.5 +Print all records to standard output (default). +.UNINDENT +.UNINDENT +.sp +\fB\-print\-enums\fP +.INDENT 0.0 +.INDENT 3.5 +Print enumeration values for a class. +.UNINDENT +.UNINDENT +.sp +\fB\-print\-sets\fP +.INDENT 0.0 +.INDENT 3.5 +Print expanded sets for testing DAG exprs. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-emitter\fP +.INDENT 0.0 +.INDENT 3.5 +Generate machine code emitter. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-register\-info\fP +.INDENT 0.0 +.INDENT 3.5 +Generate registers and register classes info. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-instr\-info\fP +.INDENT 0.0 +.INDENT 3.5 +Generate instruction descriptions. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-asm\-writer\fP +.INDENT 0.0 +.INDENT 3.5 +Generate the assembly writer. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-disassembler\fP +.INDENT 0.0 +.INDENT 3.5 +Generate disassembler. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-pseudo\-lowering\fP +.INDENT 0.0 +.INDENT 3.5 +Generate pseudo instruction lowering. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-dag\-isel\fP +.INDENT 0.0 +.INDENT 3.5 +Generate a DAG (Directed Acycle Graph) instruction selector. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-asm\-matcher\fP +.INDENT 0.0 +.INDENT 3.5 +Generate assembly instruction matcher. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-dfa\-packetizer\fP +.INDENT 0.0 +.INDENT 3.5 +Generate DFA Packetizer for VLIW targets. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-fast\-isel\fP +.INDENT 0.0 +.INDENT 3.5 +Generate a "fast" instruction selector. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-subtarget\fP +.INDENT 0.0 +.INDENT 3.5 +Generate subtarget enumerations. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-intrinsic\fP +.INDENT 0.0 +.INDENT 3.5 +Generate intrinsic information. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-tgt\-intrinsic\fP +.INDENT 0.0 +.INDENT 3.5 +Generate target intrinsic information. +.UNINDENT +.UNINDENT +.sp +\fB\-gen\-enhanced\-disassembly\-info\fP +.INDENT 0.0 +.INDENT 3.5 +Generate enhanced disassembly info. +.UNINDENT +.UNINDENT +.sp +\fB\-version\fP +.INDENT 0.0 +.INDENT 3.5 +Show the version number of this program. +.UNINDENT +.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 +2012, LLVM Project +.\" Generated by docutils manpage writer. +. |