[llvm-branch-commits] [cfe-branch] r71525 - /cfe/branches/Apple/Dib/docs/tools/clang.pod
Mike Stump
mrs at apple.com
Mon May 11 18:04:01 PDT 2009
Author: mrs
Date: Mon May 11 20:04:01 2009
New Revision: 71525
URL: http://llvm.org/viewvc/llvm-project?rev=71525&view=rev
Log:
Merge in 71059:
add some content
Modified:
cfe/branches/Apple/Dib/docs/tools/clang.pod
Modified: cfe/branches/Apple/Dib/docs/tools/clang.pod
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/Apple/Dib/docs/tools/clang.pod?rev=71525&r1=71524&r2=71525&view=diff
==============================================================================
--- cfe/branches/Apple/Dib/docs/tools/clang.pod (original)
+++ cfe/branches/Apple/Dib/docs/tools/clang.pod Mon May 11 20:04:01 2009
@@ -2,38 +2,123 @@
=head1 NAME
-clang - the clang C and Objective-C compiler
+clang - the Clang C and Objective-C compiler
=head1 SYNOPSIS
-B<clang> [I<options>] I<filenames...>
-
-FIXME: Fill in synposis and options.
+B<clang> [B<-c>|B<-S>|B<-E>] B<-std=>I<standard> B<-g>
+ [B<-O0>|B<-O1>|B<-O2>|B<-Os>|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>
+ I<input-filenames>
=head1 DESCRIPTION
-FIXME: Fill in description.
-
-=head1 OPTIONS
+B<clang> is a 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<-###>
+=item B<Driver>
-Print the commands to run for this compilation.
+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<--analyze>
+=item B<Preprocessing>
-Run the static analyzer.
+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) or ".mi" (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 or machine code
+(depending on the optimization level). This phase is responsible for optimizing
+the generated code and handling target-specfic code generation. The output of
+this stage is typically called a ".s" file.
+
+=item B<Assembly>
+
+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.
+
+=item B<Linking>
+
+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.
+
+=head1 OPTIONS
+
+
+=head2 Stage Selection Options
+
+=over
=item B<--help>
Display available options.
+
+=item B<-###>
+
+Print the commands to run for this compilation.
+
+
=item B<-E>
Only run the preprocessor.
+=item B<-S>
+
+Only run preprocess and compilation steps.
+
+=item B<-c>
+
+Only run preprocess, compile, and assemble steps.
+
+=item B<-emit-llvm>
+
+Use the LLVM representation for assembler and object files.
+
+
+
+
+=back
+
+
+
+
+
+
+=over
+
+=item B<--analyze>
+
+Run the static analyzer.
=item B<-ObjC++>
Treat source input files as Objective-C++ inputs.
@@ -46,10 +131,6 @@
Don't emit warning for unused driver arguments.
-=item B<-S>
-
-Only run preprocess and compilation steps.
-
=item B<-Wa,>I<args>
Pass the comma separated arguments in I<args> to the assembler.
@@ -82,14 +163,6 @@
Pass I<arg> to the preprocessor.
-=item B<-c>
-
-Only run preprocess, compile, and assemble steps.
-
-=item B<-emit-llvm>
-
-Use the LLVM representation for assembler and object files.
-
=item B<-o> I<file>
Write output to I<file>.
@@ -138,7 +211,7 @@
=head1 BUGS
-FIXME: Bugs?
+It is inconceivable that Clang may have a bug.
=head1 SEE ALSO
More information about the llvm-branch-commits
mailing list