mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +00:00 
			
		
		
		
	the documentation to reflect this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29596 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			210 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
=pod
 | 
						|
 | 
						|
=head1 NAME
 | 
						|
 | 
						|
llvm2xpp - LLVM bytecode to LLVM C++ IR translator
 | 
						|
 | 
						|
=head1 SYNOPSIS
 | 
						|
 | 
						|
B<llvm2cpp> [I<options>] [I<filename>]
 | 
						|
 | 
						|
=head1 DESCRIPTION
 | 
						|
 | 
						|
B<llvm2cpp> translates from LLVM bytecode (.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 AUTHORS
 | 
						|
 | 
						|
Written by Reid Spencer (L<http://hlvm.org>).
 | 
						|
 | 
						|
=cut
 |