From: Chris Lattner Date: Wed, 6 May 2009 02:47:51 +0000 (+0000) Subject: add some content X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b5f6e808e24e387abc84a830aae3d0ba36917bc7;p=clang add some content git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71059 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/tools/clang.pod b/docs/tools/clang.pod index e84bf99651..7c1c873b49 100644 --- a/docs/tools/clang.pod +++ b/docs/tools/clang.pod @@ -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 [I] I - -FIXME: Fill in synposis and options. +B [B<-c>|B<-S>|B<-E>] B<-std=>I B<-g> + [B<-O0>|B<-O1>|B<-O2>|B<-Os>|B<-O3>|B<-O4>] + B<-W>I B<-pedantic> + B<-I>I B<-L>I + B<-D>I + B<-f>I + B<-m>I + B<-o> I + I =head1 DESCRIPTION -FIXME: Fill in description. - -=head1 OPTIONS +B 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 -Print the commands to run for this compilation. +The B 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 -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 + +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 + +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 + +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 + +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 @@ Treat source input files as Objective-C inputs. Don't emit warning for unused driver arguments. -=item B<-S> - -Only run preprocess and compilation steps. - =item B<-Wa,>I Pass the comma separated arguments in I to the assembler. @@ -82,14 +163,6 @@ Pass I to the linker. Pass I 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 Write output to I. @@ -138,7 +211,7 @@ FIXME: Fill in environment. =head1 BUGS -FIXME: Bugs? +It is inconceivable that Clang may have a bug. =head1 SEE ALSO