=pod

=head1 NAME

clang - the Clang C, C++, and Objective-C compiler

=head1 SYNOPSIS

B<clang> [B<-c>|B<-S>|B<-E>] B<-std=>I<standard> B<-g>
  [B<-O0>|B<-O1>|B<-O2>|B<-Os>|B<-Oz>|B<-O3>|B<-O4>]
  B<-W>I<warnings...> B<-pedantic>
  B<-I>I<dir...> B<-L>I<dir...>
  B<-D>I<macro[=defn]>
  B<-f>I<feature-option...>
  B<-m>I<machine-option...>
  B<-o> I<output-file>
  B<-stdlib=>I<library> 
  I<input-filenames>

=head1 DESCRIPTION

B<clang> 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:

=over

=item B<Driver>

The B<clang> executable is actually a small driver which controls the overall
execution of other tools such as the compiler, assembler and linker.  Typically
you do not need to interact with the driver, but you transparently use it to run
the other tools.

=item B<Preprocessing>

This stage handles tokenization of the input source file, macro expansion,
#include expansion and handling of other preprocessor directives.  The output of
this stage is typically called a ".i" (for C), ".ii" (for C++), ".mi" (for 
Objective-C) , or ".mii" (for Objective-C++) file.

=item B<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 "Abstract Syntax Tree" (AST).

=item B<Code Generation and Optimization>

This stage translates an AST into low-level intermediate code (known as "LLVM
IR") and ultimately to machine code.  This phase is responsible for optimizing
the generated code and handling target-specific code generation.  The output of
this stage is typically called a ".s" file or "assembly" file.

Clang also supports the use of an integrated assembler, in which the code
generator produces object files directly. This avoids the overhead of generating
the ".s" file and of calling the target assembler.

=item B<Assembler>

This stage runs the target assembler to translate the output of the compiler
into a target object file.  The output of this stage is typically called a ".o"
file or "object" file.

=item B<Linker>

This stage runs the target linker to merge multiple object files into an
executable or dynamic library.  The output of this stage is typically called an
"a.out", ".dylib" or ".so" file.

=back

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:

B<Clang Static Analyzer>

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.


=head1 OPTIONS

=head2 Stage Selection Options

=over

=item B<-E>

Run the preprocessor stage.

=item B<-fsyntax-only>

Run the preprocessor, parser and type checking stages.

=item B<-S>

Run the previous stages as well as LLVM generation and optimization stages and
target-specific code generation, producing an assembly file.

=item B<-c>

Run all of the above, plus the assembler, generating a target ".o" object file.

=item B<no stage selection option>

If no stage selection option is specified, all stages above are run, and the
linker is run to combine the results into an executable or shared library.

=item B<--analyze>

Run the Clang Static Analyzer.

=back



=head2 Language Selection and Mode Options

=over

=item B<-x> I<language>

Treat subsequent input files as having type I<language>.

=item B<-std>=I<language>

Specify the language standard to compile for.

=item B<-stdlib>=I<library>

Specify the C++ standard library to use; supported options are libstdc++ and
libc++.

=item B<-ansi>

Same as B<-std=c89>.

=item B<-ObjC++>

Treat source input files as Objective-C++ inputs.

=item B<-ObjC>

Treat source input files as Objective-C inputs.

=item B<-trigraphs>

Enable trigraphs.

=item B<-ffreestanding>

Indicate that the file should be compiled for a freestanding, not a hosted,
environment.

=item B<-fno-builtin>

Disable special handling and optimizations of builtin functions like strlen and
malloc.

=item B<-fmath-errno>

Indicate that math functions should be treated as updating errno.

=item B<-fpascal-strings>

Enable support for Pascal-style strings with "\pfoo".

=item B<-fms-extensions>

Enable support for Microsoft extensions.

=item B<-fmsc-version=>

Set _MSC_VER. Defaults to 1300 on Windows. Not set otherwise.

=item B<-fborland-extensions>

Enable support for Borland extensions.

=item B<-fwritable-strings>

Make all string literals default to writable.  This disables uniquing of
strings and other optimizations.

=item B<-flax-vector-conversions>

Allow loose type checking rules for implicit vector conversions.

=item B<-fblocks>

Enable the "Blocks" language feature.

=item B<-fobjc-gc-only>

Indicate that Objective-C code should be compiled in GC-only mode, which only
works when Objective-C Garbage Collection is enabled.

=item B<-fobjc-gc>

Indicate that Objective-C code should be compiled in hybrid-GC mode, which works
with both GC and non-GC mode.

=item B<-fobjc-abi-version>=I<version>

Select the Objective-C ABI version to use. Available versions are 1 (legacy
"fragile" ABI), 2 (non-fragile ABI 1), and 3 (non-fragile ABI 2).

=item B<-fobjc-nonfragile-abi-version>=I<version>

Select the Objective-C non-fragile ABI version to use by default. This will only
be used as the Objective-C ABI when the non-fragile ABI is enabled (either via
-fobjc-nonfragile-abi, or because it is the platform default).

=item B<-fobjc-nonfragile-abi>

Enable use of the Objective-C non-fragile ABI. On platforms for which this is
the default ABI, it can be disabled with B<-fno-objc-nonfragile-abi>.

=back



=head2 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.

=over

=item B<-arch> I<architecture>

Specify the architecture to build for.

=item B<-mmacosx-version-min>=I<version>

When building for Mac OS/X, specify the minimum version supported by your
application.

=item B<-miphoneos-version-min>

When building for iPhone OS, specify the minimum version supported by your
application.


=item B<-march>=I<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.

=back


=head2 Code Generation Options

=over

=item B<-O0> B<-O1> B<-O2> B<-Os> B<-Oz> B<-O3> B<-O4>

Specify which optimization level to use.  B<-O0> means "no optimization": this
level compiles the fastest and generates the most debuggable code.  B<-O2> is a
moderate level of optimization which enables most optimizations.  B<-Os> is like
B<-O2> with extra optimizations to reduce code size.  B<-Oz> is like B<-Os> 
(and thus B<-O2>), but reduces code size further.  B<-O3> is like B<-O2>,
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, B<-O4> enables link-time optimization; object files are
stored in the LLVM bitcode file format and whole program optimization is done at
link time. B<-O1> is somewhere between B<-O0> and B<-O2>.

=item B<-g>

Generate debug information.  Note that Clang debug information works best at
B<-O0>.  At higher optimization levels, only line number information is
currently available.

=item B<-fexceptions>

Enable generation of unwind information, this allows exceptions to be thrown
through Clang compiled stack frames.  This is on by default in x86-64.

=item B<-ftrapv>

Generate code to catch integer overflow errors.  Signed integer overflow is
undefined in C, with this flag, extra code is generated to detect this and abort
when it happens.


=item B<-fvisibility>

This flag sets the default visibility level.

=item B<-fcommon>

This flag specifies that variables without initializers get common linkage.  It
can be disabled with B<-fno-common>.

=item B<-ftls-model>

Set the default thread-local storage (TLS) model to use for thread-local
variables. Valid values are: "global-dynamic", "local-dynamic", "initial-exec"
and "local-exec". The default is "global-dynamic". The default model can be
overridden with the tls_model attribute. The compiler will try to choose a more
efficient model if possible.

=item B<-flto> B<-emit-llvm>

Generate output files in LLVM formats, suitable for link time optimization. When
used with B<-S> this generates LLVM intermediate language assembly files,
otherwise this generates LLVM bitcode format object files (which may be passed
to the linker depending on the stage selection options).

=cut

##=item B<-fnext-runtime> B<-fobjc-nonfragile-abi> B<-fgnu-runtime>
##These options specify which Objective-C runtime the code generator should
##target.  FIXME: we don't want people poking these generally.

=pod

=back


=head2 Driver Options

=over

=item B<-###>

Print the commands to run for this compilation.

=item B<--help>

Display available options.

=item B<-Qunused-arguments>

Don't emit warning for unused driver arguments.

=item B<-Wa,>I<args>

Pass the comma separated arguments in I<args> to the assembler.

=item B<-Wl,>I<args>

Pass the comma separated arguments in I<args> to the linker.

=item B<-Wp,>I<args>

Pass the comma separated arguments in I<args> to the preprocessor.

=item B<-Xanalyzer> I<arg>

Pass I<arg> to the static analyzer.

=item B<-Xassembler> I<arg>

Pass I<arg> to the assembler.

=item B<-Xlinker> I<arg>

Pass I<arg> to the linker.

=item B<-Xpreprocessor> I<arg>

Pass I<arg> to the preprocessor.

=item B<-o> I<file>

Write output to I<file>.

=item B<-print-file-name>=I<file>

Print the full library path of I<file>.

=item B<-print-libgcc-file-name>

Print the library path for "libgcc.a".

=item B<-print-prog-name>=I<name>

Print the full program path of I<name>.

=item B<-print-search-dirs>

Print the paths used for finding libraries and programs.

=item B<-save-temps>

Save intermediate compilation results.

=item B<-integrated-as> B<-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.

=item B<-time>

Time individual commands.

=item B<-ftime-report>

Print timing summary of each stage of compilation.

=item B<-v>

Show commands to run and use verbose output.

=back


=head2 Diagnostics Options

=over

=item B<-fshow-column>
B<-fshow-source-location>
B<-fcaret-diagnostics>
B<-fdiagnostics-fixit-info>
B<-fdiagnostics-parseable-fixits>
B<-fdiagnostics-print-source-range-info>
B<-fprint-source-range-info>
B<-fdiagnostics-show-option>
B<-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.

=back


=head2 Preprocessor Options

=over

=item B<-D>I<macroname=value>

Adds an implicit #define into the predefines buffer which is read before the
source file is preprocessed.

=item B<-U>I<macroname>

Adds an implicit #undef into the predefines buffer which is read before the
source file is preprocessed.

=item B<-include> I<filename>

Adds an implicit #include into the predefines buffer which is read before the
source file is preprocessed.

=item B<-I>I<directory>

Add the specified directory to the search path for include files.

=item B<-F>I<directory>

Add the specified directory to the search path for framework include files.

=item B<-nostdinc>

Do not search the standard system directories or compiler builtin directories
for include files.

=item B<-nostdlibinc>

Do not search the standard system directories for include files, but do search
compiler builtin include directories.

=item B<-nobuiltininc>

Do not search clang's builtin directory for include files.

=cut

## TODO, but do we really want people using this stuff?
#=item B<-idirafter>I<directory>
#=item B<-iquote>I<directory>
#=item B<-isystem>I<directory>
#=item B<-iprefix>I<directory>
#=item B<-iwithprefix>I<directory>
#=item B<-iwithprefixbefore>I<directory>
#=item B<-isysroot>

=pod


=back



=cut

### TODO someday.
#=head2 Warning Control Options
#=over
#=back
#=head2 Code Generation and Optimization Options
#=over
#=back
#=head2 Assembler Options
#=over
#=back
#=head2 Linker Options
#=over
#=back
#=head2 Static Analyzer Options
#=over
#=back

=pod


=head1 ENVIRONMENT

=over

=item B<TMPDIR>, B<TEMP>, B<TMP>

These environment variables are checked, in order, for the location to
write temporary files used during the compilation process.

=item B<CPATH>

If this environment variable is present, it is treated as a delimited
list of paths to be added to the default system include path list. The
delimiter is the platform dependent delimitor, as used in the I<PATH>
environment variable.

Empty components in the environment variable are ignored.

=item B<C_INCLUDE_PATH>, B<OBJC_INCLUDE_PATH>, B<CPLUS_INCLUDE_PATH>,
B<OBJCPLUS_INCLUDE_PATH>

These environment variables specify additional paths, as for CPATH,
which are only used when processing the appropriate language.

=item B<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.

=back

=head1 BUGS

To report bugs, please visit L<http://llvm.org/bugs/>.  Most bug reports should
include preprocessed source files (use the B<-E> option) and the full output of 
the compiler, along with information to reproduce.

=head1 SEE ALSO

 as(1), ld(1)

=head1 AUTHOR

Maintained by the Clang / LLVM Team (L<http://clang.llvm.org>).

=cut
