summaryrefslogtreecommitdiffstats
path: root/usr.bin/clang
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/clang')
-rw-r--r--usr.bin/clang/Makefile5
-rw-r--r--usr.bin/clang/clang-tblgen/Makefile18
-rw-r--r--usr.bin/clang/clang.prog.mk14
-rw-r--r--usr.bin/clang/clang/Makefile82
-rw-r--r--usr.bin/clang/clang/clang.1503
-rw-r--r--usr.bin/clang/tblgen/Makefile41
-rw-r--r--usr.bin/clang/tblgen/tblgen.1215
7 files changed, 878 insertions, 0 deletions
diff --git a/usr.bin/clang/Makefile b/usr.bin/clang/Makefile
new file mode 100644
index 0000000..ef5a0e7
--- /dev/null
+++ b/usr.bin/clang/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR= clang clang-tblgen tblgen
+
+.include <bsd.subdir.mk>
diff --git a/usr.bin/clang/clang-tblgen/Makefile b/usr.bin/clang/clang-tblgen/Makefile
new file mode 100644
index 0000000..aedbeb4
--- /dev/null
+++ b/usr.bin/clang/clang-tblgen/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+PROG_CXX=clang-tblgen
+NO_MAN=
+
+SRCDIR= tools/clang/utils/TableGen
+SRCS= ClangASTNodesEmitter.cpp \
+ ClangAttrEmitter.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..bf64177
--- /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..48f1655
--- /dev/null
+++ b/usr.bin/clang/clang/Makefile
@@ -0,0 +1,82 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+PROG_CXX=clang
+
+SRCDIR= tools/clang/tools/driver
+SRCS= cc1_main.cpp \
+ cc1as_main.cpp \
+ driver.cpp
+
+LINKS= ${BINDIR}/clang ${BINDIR}/clang++ \
+ ${BINDIR}/clang ${BINDIR}/clang-cpp
+MLINKS= clang.1 clang++.1 \
+ clang.1 clang-cpp.1
+
+TGHDRS= CC1AsOptions \
+ CC1Options \
+ DiagnosticCommonKinds \
+ DiagnosticDriverKinds \
+ DiagnosticFrontendKinds \
+ DiagnosticLexKinds \
+ DiagnosticSemaKinds \
+ Options
+LIBDEPS=clangfrontendtool \
+ clangfrontend \
+ clangdriver \
+ clangserialization \
+ clangcodegen \
+ clangparse \
+ clangsema \
+ clangstaticanalyzerfrontend \
+ clangstaticanalyzercheckers \
+ clangstaticanalyzercore \
+ clanganalysis \
+ clangindex \
+ clangarcmigrate \
+ clangrewrite \
+ clangast \
+ clanglex \
+ clangbasic \
+ llvmipo \
+ llvminstrumentation \
+ llvmbitwriter \
+ llvmbitreader \
+ llvmasmparser \
+ llvmarmdisassembler \
+ llvmarmasmparser \
+ llvmarmcodegen \
+ llvmarmdesc \
+ llvmarminstprinter \
+ llvmarminfo \
+ llvmmipscodegen \
+ llvmmipsdesc \
+ llvmmipsinstprinter \
+ llvmmipsinfo \
+ llvmpowerpccodegen \
+ llvmpowerpcdesc \
+ llvmpowerpcinstprinter \
+ llvmpowerpcinfo \
+ llvmx86disassembler \
+ llvmx86asmparser \
+ llvmx86codegen \
+ llvmx86desc \
+ llvmselectiondag \
+ llvmasmprinter \
+ llvmmcparser \
+ llvmcodegen \
+ llvmscalaropts \
+ llvminstcombine \
+ llvmtransformutils \
+ llvmipa \
+ llvmanalysis \
+ llvmtarget \
+ llvmx86instprinter \
+ llvmx86utils \
+ llvmcore \
+ llvmx86info \
+ llvmmc \
+ 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..d8884df
--- /dev/null
+++ b/usr.bin/clang/clang/clang.1
@@ -0,0 +1,503 @@
+.\" $FreeBSD$
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" 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 "2011-10-17" "clang 3.0" "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\-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 builting 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 delimitor, 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/tblgen/Makefile b/usr.bin/clang/tblgen/Makefile
new file mode 100644
index 0000000..4eba106
--- /dev/null
+++ b/usr.bin/clang/tblgen/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+
+PROG_CXX=tblgen
+
+SRCDIR= utils/TableGen
+SRCS= ARMDecoderEmitter.cpp \
+ AsmMatcherEmitter.cpp \
+ AsmWriterEmitter.cpp \
+ AsmWriterInst.cpp \
+ CallingConvEmitter.cpp \
+ CodeEmitterGen.cpp \
+ CodeGenDAGPatterns.cpp \
+ CodeGenInstruction.cpp \
+ CodeGenRegisters.cpp \
+ CodeGenTarget.cpp \
+ DAGISelEmitter.cpp \
+ DAGISelMatcher.cpp \
+ DAGISelMatcherEmitter.cpp \
+ DAGISelMatcherGen.cpp \
+ DAGISelMatcherOpt.cpp \
+ DisassemblerEmitter.cpp \
+ EDEmitter.cpp \
+ FastISelEmitter.cpp \
+ FixedLenDecoderEmitter.cpp \
+ InstrEnumEmitter.cpp \
+ InstrInfoEmitter.cpp \
+ IntrinsicEmitter.cpp \
+ PseudoLoweringEmitter.cpp \
+ RegisterInfoEmitter.cpp \
+ SetTheory.cpp \
+ StringMatcher.cpp \
+ SubtargetEmitter.cpp \
+ TGValueTypes.cpp \
+ TableGen.cpp \
+ X86DisassemblerTables.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..edbce9f
--- /dev/null
+++ b/usr.bin/clang/tblgen/tblgen.1
@@ -0,0 +1,215 @@
+.\" $FreeBSD$
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" 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 "TBLGEN 1"
+.TH TBLGEN 1 "2011-04-23" "LLVM 3.0" "LLVM Command Guide"
+.\" 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"
+tblgen \- Target Description To C++ Code Generator
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBtblgen\fR [\fIoptions\fR] [\fIfilename\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBtblgen\fR translates from target description (.td) files into \*(C+ code that can
+be included in the definition of an \s-1LLVM\s0 target library. Most users of \s-1LLVM\s0 will
+not need to use this program. It is only for assisting with writing an \s-1LLVM\s0
+target backend.
+.PP
+The input and output of \fBtblgen\fR is beyond the scope of this short
+introduction. Please see the \fICodeGeneration\fR page in the \s-1LLVM\s0 documentation.
+.PP
+The \fIfilename\fR argument specifies the name of a Target Description (.td) file
+to read as input.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+Specify the output file name. If \fIfilename\fR is \f(CW\*(C`\-\*(C'\fR, then \fBtblgen\fR
+sends its output to standard output.
+.IP "\fB\-I\fR \fIdirectory\fR" 4
+.IX Item "-I directory"
+Specify where to find other target description files for inclusion. The
+\&\fIdirectory\fR value should be a full or partial path to a directory that contains
+target description files.
+.IP "\fB\-asmwriternum\fR \fIN\fR" 4
+.IX Item "-asmwriternum N"
+Make \-gen\-asm\-writer emit assembly writer number \fIN\fR.
+.IP "\fB\-class\fR \fIclass Name\fR" 4
+.IX Item "-class class Name"
+Print the enumeration list for this class.
+.IP "\fB\-print\-records\fR" 4
+.IX Item "-print-records"
+Print all records to standard output (default).
+.IP "\fB\-print\-enums\fR" 4
+.IX Item "-print-enums"
+Print enumeration values for a class
+.IP "\fB\-gen\-emitter\fR" 4
+.IX Item "-gen-emitter"
+Generate machine code emitter.
+.IP "\fB\-gen\-register\-enums\fR" 4
+.IX Item "-gen-register-enums"
+Generate the enumeration values for all registers.
+.IP "\fB\-gen\-register\-desc\fR" 4
+.IX Item "-gen-register-desc"
+Generate a register info description for each register.
+.IP "\fB\-gen\-register\-desc\-header\fR" 4
+.IX Item "-gen-register-desc-header"
+Generate a register info description header for each register.
+.IP "\fB\-gen\-instr\-enums\fR" 4
+.IX Item "-gen-instr-enums"
+Generate enumeration values for instructions.
+.IP "\fB\-gen\-instr\-desc\fR" 4
+.IX Item "-gen-instr-desc"
+Generate instruction descriptions.
+.IP "\fB\-gen\-asm\-writer\fR" 4
+.IX Item "-gen-asm-writer"
+Generate the assembly writer.
+.IP "\fB\-gen\-dag\-isel\fR" 4
+.IX Item "-gen-dag-isel"
+Generate a \s-1DAG\s0 (Directed Acycle Graph) instruction selector.
+.IP "\fB\-gen\-subtarget\fR" 4
+.IX Item "-gen-subtarget"
+Generate subtarget enumerations.
+.IP "\fB\-gen\-intrinsic\fR" 4
+.IX Item "-gen-intrinsic"
+Generate intrinsic information.
+.IP "\fB\-version\fR" 4
+.IX Item "-version"
+Show the version number of this program.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBtblgen\fR succeeds, it will exit with 0. Otherwise, if an error
+occurs, it will exit with a non-zero value.
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by The \s-1LLVM\s0 Team (<http://llvm.org/>).
OpenPOWER on IntegriCloud