=pod

=head1 NAME

llvm2xpp - LLVM bitcode to LLVM C++ IR translator

=head1 SYNOPSIS

B<llvm2cpp> [I<options>] [I<filename>]

=head1 DESCRIPTION

B<llvm2cpp> translates from LLVM bitcode (.bc files) to a 
corresponding C++ source file that will make calls against the LLVM C++ API to
build the same module as the input. By default, the C++ output is a complete
program that builds the module, verifies it and then emits the module as
LLVM assembly. This technique assists with testing because the input to
B<llvm2cpp> and the output of the generated C++ program should be identical.

If F<filename> is omitted or is C<->, then B<llvm2cpp> reads its input from
standard input.

If an output file is not specified with the B<-o> option, then
B<llvm2cpp> sends its output to a file or standard output by following
these rules:

=over 

=item *

If the input is standard input, then the output is standard output.

=item *

If the input is a file that ends with C<.bc>, then the output file is of
the same name, except that the suffix is changed to C<.cpp>.

=item *

If the input is a file that does not end with the C<.bc> suffix, then the
output file has the same name as the input file, except that the C<.cpp>
suffix is appended.

=back

=head1 OPTIONS

=over

=item B<-f>

Force overwrite.  Normally, B<llvm2cpp> will refuse to overwrite an
output file that already exists.  With this option, B<llvm2cpp>
will overwrite the output file and replace it with new C++ source code.

=item B<--help>

Print a summary of command line options.

=item B<-f> 

Normally, B<llvm2cpp> will not overwrite an existing output file. With this
option, that default behavior is changed and the program will overwrite existing
output files.

=item B<-o> F<filename>

Specify the output file name.  If F<filename> is C<->, then B<llvm2cpp>
sends its output to standard output.

=item B<-funcname> F<functionName>

Specify the name of the function to be generated. The generated code contains a
single function that produces the input module. By default its name is
I<makeLLVMModule>. The B<-funcname> option overrides this default and allows
you to control the name of the generated function. This is handy in conjunction
with the B<-fragment> option when you only want B<llvm2cpp> to generate a
single function that produces the module. With both options, such generated code
could be I<#included> into another program.

=item B<-for>

Specify the name of the thing for which C++ code should be generated. By default
the entire input module is re-generated. However, use of the various B<-gen-*>
options can restrict what is produced. This option indicates what that
restriction is.

=item B<-gen-program>

Specify that the output should be a complete program. Such program will recreate
B<llvm2cpp>'s input as an LLVM module, verify that module, and then write out
the module in LLVM assembly format. This is useful for doing identity tests
where the output of the generated program is identical to the input to
B<llvm2cpp>. The LLVM DejaGnu test suite can make use of this fact. This is the
default form of generated output.

If the B<-for> option is given with this option, it specifies the module
identifier to use for the module created.

=item B<-gen-module>

Specify that the output should be a function that regenerates the module. It is
assumed that this output will be #included into another program that has already
arranged for the correct header files to be #included. The function generated
takes no arguments and returns a I<Module*>. 

If the B<-for> option is given with this option, it specifies the module
identifier to use in creating the module returned by the generated function.

=item B<-gen-contents>

Specify that the output should be a function that adds the contents of the input
module to another module. It is assumed that the output will be #included into
another program that has already arranged for the correct header files to be
#included. The function generated takes a single argument of type I<Module*> and
returns that argument. Note that Module level attributes such as endianess,
pointer size, target triple and inline asm are not passed on from the input
module to the destination module. Only the sub-elements of the module (types,
constants, functions, global variables) will be added to the input module.

If the B<-for> option is given with this option, it specifies the module
identifier to set in the input module by the generated function.

=item B<-gen-function>

Specify that the output should be a function that produces the definitions
necessary for a specific function to be added to a module.  It is assumed that 
the output will be #included into another program that has already arranged 
for the correct header files to be #included. The function generated takes a 
single argument of type I<Module*> and returns the I<Function*> that it added to
the module.  Note that only those things (types, constants, etc.) directly 
needed in the definition of the function will be placed in the generated
function. 

The B<-for> option must be given with this option or an error will be produced.
The value of the option must be the name of a function in the input module for
which code should be generated. If the named function does not exist an error
will be produced.

=item B<-gen-inline>

This option is very analagous to B<-gen-function> except that the generated
function will not re-produce the target function's definition. Instead, the body
of the target function is inserted into some other function passed as an
argument to the generated function. Similarly any arguments to the function must
be passed to the generated function. The result of the generated function is the
first basic block of the target function.

The B<-for> option works the same way as it does for B<-gen-function>.

=item B<-gen-variable>

Specify that the output should be a function that produces the definitions
necessary for a specific global variable to be added to a module. It is assumed
that the output will be #included into another program that has already arranged
for the correct header files to be #included. The function generated takes a
single argument of type I<Module*> and returns the I<GlobalVariable*> that it 
added to the module. Note that only those things (types, constants, etc.)
directly needed in the definition of the global variable will be placed in the
generated function.

The B<-for> option must be given with this option or an error will be produced.
THe value of the option must be the name of a global variable in the input
module for which code should be generated. If the named global variable does not
exist an error will be produced.

=item B<-gen-type>

Specify that the output should be a function that produces the definitions
necessary for specific type to be added to a module. It is assumed that the
otuput will be #included into another program that has already arranged for the
correct header files to be #included. The function generated take a single
argument of type I<Module*> and returns the I<Type*> that it added to the
module. Note that the generated function will only add the necessary type
definitions to (possibly recursively) define the requested type.

The B<-for> option must be given with this option or an error will be produced.
The value of the option must be the name of a global type in the input module
for which code should be generated. If the named type does not exist an error
will be produced.

=item B<-stats>

Show pass statistics (not interesting in this program).

=item B<-time-passes>

Show pass timing statistics (not interesting in this program).

=item B<-version>

Show the version number of this program.

=back


=head1 EXIT STATUS

If B<llvm2cpp> succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value.

=head1 SEE ALSO

L<llvm-as|llvm-as> L<tblgen|tblgen>

=head1 NOTES

This tool may be removed from a future version of LLVM. Instead, its
functionality may be incorporated into the llc tool. It would then act similarly
to other targets except its output would be C++ source that could be compiled to
construct the input program.

=head1 AUTHORS

Written by Reid Spencer (L<http://hlvm.org>).

=cut
