diff options
Diffstat (limited to 'docs/CommandGuide/man/man1/llvmc.1')
-rw-r--r-- | docs/CommandGuide/man/man1/llvmc.1 | 455 |
1 files changed, 455 insertions, 0 deletions
diff --git a/docs/CommandGuide/man/man1/llvmc.1 b/docs/CommandGuide/man/man1/llvmc.1 new file mode 100644 index 0000000000..9506c5e495 --- /dev/null +++ b/docs/CommandGuide/man/man1/llvmc.1 @@ -0,0 +1,455 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.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. | will give a +.\" real vertical bar. \*(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-|\(bv\*(Tr +.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\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" 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 "LLVMC 1" +.TH LLVMC 1 "2007-02-11" "CVS" "LLVM Command Guide" +.SH "NAME" +llvmc \- The LLVM Compiler Driver (experimental) +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBllvmc\fR [\fIoptions\fR] [\fIfilenames\fR...] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBllvmc\fR is a configurable driver for invoking other \s-1LLVM\s0 (and non\-LLVM) tools +in order to compile, optimize and link software for multiple languages. For +those familiar with \s-1FSF\s0's \fBgcc\fR tool, it is very similar. Please note that +\&\fBllvmc\fR is considered an experimental tool. \fBllvmc\fR has the following goals: +.IP "* provide a single point of access to the \s-1LLVM\s0 tool set," 4 +.IX Item "provide a single point of access to the LLVM tool set," +.PD 0 +.IP "* hide the complexities of the \s-1LLVM\s0 tools through a single interface," 4 +.IX Item "hide the complexities of the LLVM tools through a single interface," +.IP "* make integration of existing non-LLVM tools simple," 4 +.IX Item "make integration of existing non-LLVM tools simple," +.IP "* extend the capabilities of minimal front ends, and" 4 +.IX Item "extend the capabilities of minimal front ends, and" +.IP "* make the interface for compiling consistent for all languages." 4 +.IX Item "make the interface for compiling consistent for all languages." +.PD +.PP +The tool itself does nothing with a user's program. It merely invokes other +tools to get the compilation tasks done. +.PP +The options supported by \fBllvmc\fR generalize the compilation process and +provide a consistent and simple interface for multiple programming languages. +This makes it easier for developers to get their software compiled with \s-1LLVM\s0. +Without \fBllvmc\fR, developers would need to understand how to invoke the +front-end compiler, optimizer, assembler, and linker in order to compile their +programs. \fBllvmc\fR's sole mission is to trivialize that process. +.Sh "Basic Operation" +.IX Subsection "Basic Operation" +\&\fBllvmc\fR always takes the following basic actions: +.IP "* Command line options and filenames are collected." 4 +.IX Item "Command line options and filenames are collected." +The command line options provide the marching orders to \fBllvmc\fR on what actions +it should perform. This is the \fIrequest\fR the user is making of \fBllvmc\fR and it +is interpreted first. +.IP "* Configuration files are read." 4 +.IX Item "Configuration files are read." +Based on the options and the suffixes of the filenames presented, a set of +configuration files are read to configure the actions \fBllvmc\fR will take. +Configuration files are provided by either \s-1LLVM\s0 or the front end compiler tools +that \fBllvmc\fR invokes. Users generally don't need to be concerned with the +contents of the configuration files. +.IP "* Determine actions to take." 4 +.IX Item "Determine actions to take." +The tool chain needed to complete the task is determined. This is the primary +work of \fBllvmc\fR. It breaks the request specified by the command line options +into a set of basic actions to be done: +.RS 4 +.IP "* Pre\-processing: gathering/filtering compiler input (optional)." 4 +.IX Item "Pre-processing: gathering/filtering compiler input (optional)." +.PD 0 +.IP "* Translation: source language to bytecode conversion." 4 +.IX Item "Translation: source language to bytecode conversion." +.IP "* Assembly: bytecode to native code conversion." 4 +.IX Item "Assembly: bytecode to native code conversion." +.IP "* Optimization: conversion of bytecode to something that runs faster." 4 +.IX Item "Optimization: conversion of bytecode to something that runs faster." +.IP "* Linking: combining multiple bytecodes to produce executable program." 4 +.IX Item "Linking: combining multiple bytecodes to produce executable program." +.RE +.RS 4 +.RE +.IP "* Execute actions." 4 +.IX Item "Execute actions." +.PD +The actions determined previously are executed sequentially and then +\&\fBllvmc\fR terminates. +.SH "OPTIONS" +.IX Header "OPTIONS" +.Sh "Control Options" +.IX Subsection "Control Options" +Control options tell \fBllvmc\fR what to do at a high level. The +following control options are defined: +.IP "\fB\-c\fR or \fB\-\-compile\fR" 4 +.IX Item "-c or --compile" +This option specifies that the linking phase is not to be run. All +previous phases, if applicable will run. This is generally how a given +bytecode file is compiled and optimized for a source language module. +.IP "\fB\-k\fR or \fB\-\-link\fR or default" 4 +.IX Item "-k or --link or default" +This option (or the lack of any control option) specifies that all stages +of compilation, optimization, and linking should be attempted. Source files +specified on the command line will be compiled and linked with objects and +libraries also specified. +.IP "\fB\-S\fR" 4 +.IX Item "-S" +This option specifies that compilation should end in the creation of +an \s-1LLVM\s0 assembly file that can be later converted to an \s-1LLVM\s0 object +file. +.IP "\fB\-E\fR" 4 +.IX Item "-E" +This option specifies that no compilation or linking should be +performed. Only pre\-processing, if applicable to the language being +compiled, is performed. For languages that support it, this will +result in the output containing the raw input to the compiler. +.Sh "Optimization Options" +.IX Subsection "Optimization Options" +Optimization with \fBllvmc\fR is based on goals and specified with +the following \-O options. The specific details of which +optimizations run is controlled by the configuration files because +each source language will have different needs. +.IP "\fB\-O1\fR or \fB\-O0\fR (default, fast compilation)" 4 +.IX Item "-O1 or -O0 (default, fast compilation)" +Only those optimizations that will hasten the compilation (mostly by reducing +the output) are applied. In general these are extremely fast and simple +optimizations that reduce emitted code size. The goal here is not to make the +resulting program fast but to make the compilation fast. If not specified, +this is the default level of optimization. +.IP "\fB\-O2\fR (basic optimization)" 4 +.IX Item "-O2 (basic optimization)" +This level of optimization specifies a balance between generating good code +that will execute reasonably quickly and not spending too much time optimizing +the code to get there. For example, this level of optimization may include +things like global common subexpression elimination, aggressive dead code +elimination, and scalar replication. +.IP "\fB\-O3\fR (aggressive optimization)" 4 +.IX Item "-O3 (aggressive optimization)" +This level of optimization aggressively optimizes each set of files compiled +together. However, no link-time inter-procedural optimization is performed. +This level implies all the optimizations of the \fB\-O1\fR and \fB\-O2\fR optimization +levels, and should also provide loop optimizations and compile time +inter-procedural optimizations. Essentially, this level tries to do as much +as it can with the input it is given but doesn't do any link time \s-1IPO\s0. +.IP "\fB\-O4\fR (link time optimization)" 4 +.IX Item "-O4 (link time optimization)" +In addition to the previous three levels of optimization, this level of +optimization aggressively optimizes each program at link time. It employs +basic analysis and basic link-time inter-procedural optimizations, +considering the program as a whole. +.IP "\fB\-O5\fR (aggressive link time optimization)" 4 +.IX Item "-O5 (aggressive link time optimization)" +This is the same as \fB\-O4\fR except it employs aggressive analyses and +aggressive inter-procedural optimization. +.IP "\fB\-O6\fR (profile guided optimization: not implemented)" 4 +.IX Item "-O6 (profile guided optimization: not implemented)" +This is the same as \fB\-O5\fR except that it employs profile-guided +re-optimization of the program after it has executed. Note that this implies +a single level of re-optimization based on runtime profile analysis. Once +the re-optimization has completed, the profiling instrumentation is +removed and final optimizations are employed. +.IP "\fB\-O7\fR (lifelong optimization: not implemented)" 4 +.IX Item "-O7 (lifelong optimization: not implemented)" +This is the same as \fB\-O5\fR and similar to \fB\-O6\fR except that re-optimization +is performed through the life of the program. That is, each run will update +the profile by which future re-optimizations are directed. +.Sh "Input Options" +.IX Subsection "Input Options" +.IP "\fB\-l\fR \fI\s-1LIBRARY\s0\fR" 4 +.IX Item "-l LIBRARY" +This option instructs \fBllvmc\fR to locate a library named \fI\s-1LIBRARY\s0\fR and search +it for unresolved symbols when linking the program. +.IP "\fB\-L\fR \fIpath\fR" 4 +.IX Item "-L path" +This option instructs \fBllvmc\fR to add \fIpath\fR to the list of places in which +the linker will +.IP "\fB\-x\fR \fI\s-1LANGUAGE\s0\fR" 4 +.IX Item "-x LANGUAGE" +This option instructs \fBllvmc\fR to regard the following input files as +containing programs in the language \fI\s-1LANGUAGE\s0\fR. Normally, input file languages +are identified by their suffix but this option will override that default +behavior. The \fB\-x\fR option stays in effect until the end of the options or +a new \fB\-x\fR option is encountered. +.Sh "Output Options" +.IX Subsection "Output Options" +.IP "\fB\-m\fR\fIarch\fR" 4 +.IX Item "-march" +This option selects the back end code generator to use. The \fIarch\fR portion +of the option names the back end to use. +.IP "\fB\-\-native\fR" 4 +.IX Item "--native" +Normally, \fBllvmc\fR produces bytecode files at most stages of compilation. +With this option, \fBllvmc\fR will arrange for native object files to be +generated with the \fB\-c\fR option, native assembly files to be generated +with the \fB\-S\fR option, and native executables to be generated with the +\&\fB\-\-link\fR option. In the case of the \fB\-E\fR option, the output will not +differ as there is no \fInative\fR version of pre-processed output. +.IP "\fB\-o\fR \fIfilename\fR" 4 +.IX Item "-o filename" +Specify the output file name. The contents of the file depend on other +options. +.Sh "Information Options" +.IX Subsection "Information Options" +.IP "\fB\-n\fR or \fB\-\-no\-op\fR" 4 +.IX Item "-n or --no-op" +This option tells \fBllvmc\fR to do everything but actually execute the +resulting tools. In combination with the \fB\-v\fR option, this causes \fBllvmc\fR +to merely print out what it would have done. +.IP "\fB\-v\fR or \fB\-\-verbose\fR" 4 +.IX Item "-v or --verbose" +This option will cause \fBllvmc\fR to print out (on standard output) each of the +actions it takes to accomplish the objective. The output will immediately +precede the invocation of other tools. +.IP "\fB\-\-stats\fR" 4 +.IX Item "--stats" +Print all statistics gathered during the compilation to the standard error. +Note that this option is merely passed through to the sub-tools to do with +as they please. +.IP "\fB\-\-time\-passes\fR" 4 +.IX Item "--time-passes" +Record the amount of time needed for each optimization pass and print it +to standard error. Like \fB\-\-stats\fR this option is just passed through to +the sub-tools to do with as they please. +.IP "\fB\-\-time\-programs\fR" 4 +.IX Item "--time-programs" +Record the amount of time each program (compilation tool) takes and print +it to the standard error. +.Sh "Language Specific Options" +.IX Subsection "Language Specific Options" +.IP "\fB\-T,pre\fR=\fIoptions\fR" 4 +.IX Item "-T,pre=options" +Pass an arbitrary option to the pre\-processor. +.IP "\fB\-T,opt\fR=\fIoptions\fR" 4 +.IX Item "-T,opt=options" +Pass an arbitrary option to the optimizer. +.IP "\fB\-T,lnk\fR=\fIoptions\fR" 4 +.IX Item "-T,lnk=options" +Pass an arbitrary option to the linker. +.IP "\fB\-T,asm\fR=\fIoptions\fR" 4 +.IX Item "-T,asm=options" +Pass an arbitrary option to the code generator. +.Sh "C/\*(C+ Specific Options" +.IX Subsection "C/ Specific Options" +.IP "\fB\-I\fR\fIpath\fR" 4 +.IX Item "-Ipath" +This option is just passed through to a C or \*(C+ front end compiler to tell it +where include files can be found. +.IP "\fB\-D\fR\fIsymbol\fR" 4 +.IX Item "-Dsymbol" +This option is just passed through to a C or \*(C+ front end compiler to tell it +to define a symbol. +.Sh "Miscellaneous Options" +.IX Subsection "Miscellaneous Options" +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Print a summary of command line options. +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +This option will cause \fBllvmc\fR to print out its version number and terminate. +.Sh "Advanced Options" +.IX Subsection "Advanced Options" +You better know what you're doing if you use these options. Improper use +of these options can produce drastically wrong results. +.IP "\fB\-\-config\-dir\fR \fIdirname\fR" 4 +.IX Item "--config-dir dirname" +This option tells \fBllvmc\fR to read configuration data from the \fIdirectory\fR +named \fIdirname\fR. Data from such directories will be read in the order +specified on the command line after all other standard configuration files have +been read. This allows users or groups of users to conveniently create +their own configuration directories in addition to the standard ones to which +they may not have write access. +.Sh "Unimplemented Options" +.IX Subsection "Unimplemented Options" +The options below are not currently implemented in \fBllvmc\fR but will be +eventually. They are documented here as \*(L"future design\*(R". +.IP "\fB\-\-show\-config\fR \fI[suffixes...]\fR" 4 +.IX Item "--show-config [suffixes...]" +When this option is given, the only action taken by \fBllvmc\fR is to show its +final configuration state in the form of a configuration file. No compilation +tasks will be conducted when this option is given; processing will stop once +the configuration has been printed. The optional (comma separated) list of +suffixes controls what is printed. Without any suffixes, the configuration +for all languages is printed. With suffixes, only the languages pertaining +to those file suffixes will be printed. The configuration information is +printed after all command line options and configuration files have been +read and processed. This allows the user to verify that the correct +configuration data has been read by \fBllvmc\fR. +.IP "\fB\-\-config\fR :\fIsection\fR:\fIname\fR=\fIvalue\fR" 4 +.IX Item "--config :section:name=value" +This option instructs \fBllvmc\fR to accept \fIvalue\fR as the value for configuration +item \fIname\fR in the section named \fIsection\fR. This is a quick way to override +a configuration item on the command line without resorting to changing the +configuration files. +.IP "\fB\-\-config\-only\-from\fR \fIdirname\fR" 4 +.IX Item "--config-only-from dirname" +This option tells \fBllvmc\fR to skip the normal processing of configuration +files and only configure from the contents of the \fIdirname\fR directory. Multiple +\&\fB\-\-config\-only\-from\fR options may be given in which case the directories are +read in the order given on the command line. +.IP "\fB\-\-emit\-raw\-code\fR" 4 +.IX Item "--emit-raw-code" +No optimization is done whatsoever. The compilers invoked by \fBllvmc\fR with +this option given will be instructed to produce raw, unoptimized code. This +option is useful only to front end language developers and therefore does not +participate in the list of \fB\-O\fR options. This is distinctly different from +the \fB\-O0\fR option (a synonym for \fB\-O1\fR) because those optimizations will +reduce code size to make compilation faster. With \fB\-\-emit\-raw\-code\fR, only +the full raw code produced by the compiler will be generated. +.SH "EXIT STATUS" +.IX Header "EXIT STATUS" +If \fBllvmc\fR succeeds, it will exit with 0. Otherwise, if an error +occurs, it will exit with a non-zero value and no compilation actions +will be taken. If one of the compilation tools returns a non-zero +status, pending actions will be discarded and \fBllvmc\fR will return the +same result code as the failing compilation tool. +.SH "DEFICIENCIES" +.IX Header "DEFICIENCIES" +\&\fBllvmc\fR is considered an experimental \s-1LLVM\s0 tool because it has these +deficiencies: +.IP "Insufficient support for native linking" 4 +.IX Item "Insufficient support for native linking" +Because \fBllvm-ld\fR doesn't handle native linking, neither can \fBllvmc\fR +.IP "Poor configuration support" 4 +.IX Item "Poor configuration support" +The support for configuring new languages, etc. is weak. There are many +command line configurations that cannot be achieved with the current +support. Furthermore the grammar is cumbersome for configuration files. +Please see <http://llvm.org/PR686> for further details. +.IP "Does not handle target specific configurations" 4 +.IX Item "Does not handle target specific configurations" +This is one of the major deficiencies, also addressed in +<http://llvm.org/PR686> +.SH "SEE ALSO" +.IX Header "SEE ALSO" +llvm-as, llvm-dis, llc, llvm-link +.SH "AUTHORS" +.IX Header "AUTHORS" +Maintained by the \s-1LLVM\s0 Team (<http://llvm.org>). |