=pod

=head1 NAME

llvm-as - LLVM assembler

=head1 SYNOPSIS

B<llvm-as> [I<options>] [I<filename>]

=head1 DESCRIPTION

B<llvm-as> is the LLVM assembler.  It reads a file containing human-readable
LLVM assembly language, translates it to LLVM bytecode, and writes the result
into a file or to standard output.

If F<filename> is omitted or is C<->, then B<llvm-as> 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<.bc>.

=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<.bc>
suffix is appended.

=back

=head1 OPTIONS

=over

=item B<-f>

Force overwrite.  Normally, B<llvm-as> will refuse to overwrite an
output file that already exists.  With this option, B<llvm-as>
will overwrite the output file and replace it with new bytecode.

=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<llvm-as>
sends its output to standard output.

=back

=head1 EXIT STATUS

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

=head1 SEE ALSO

L<llvm-dis|llvm-dis>, L<gccas|gccas>

=head1 AUTHORS

Maintained by the LLVM Team (L<http://llvm.cs.uiuc.edu>).

=cut
