=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 bitcode, 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 bitcode.

=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.org>).

=cut
