aboutsummaryrefslogtreecommitdiff
path: root/docs/CommandGuide/llvm2cpp.pod
blob: 0dc30acd6c2a73cc163709d2bd3c2312ee755c81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
=pod

=head1 NAME

llvm2xpp - LLVM assembler to LLVM C++ IR translator

=head1 SYNOPSIS

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

=head1 DESCRIPTION

B<llvm2cpp> translates from human readable LLVM assembly (.ll 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 again. 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<llvm-as> 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<.ll>, 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<.ll> 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<-o> F<filename>

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

=item B<-modname> F<moduleName>

Specify the name of the module to be generated. Normally the generated program
creates a module that has the same name as the input file. If the input file was
read from the standard input then the module name will be '<stdin>'. This option
overrides both these default actions and specifies that the module name used
must be F<moduleName>.

=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<-fragment>

This boolean option tells B<llvm2cpp> to generate only a program fragment. By
deault B<llvm2cpp> generates a full program. With this option specified, only a
single function that generates the input module will be generated.

=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>

=head1 AUTHORS

Maintained by the LLVM Team (L<http://llvm.org>).

=cut