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

Enable binary output on terminals.  Normally, B<llvm-as> will refuse to
write raw bitcode output if the output stream is a terminal. With this option,
B<llvm-as> will write raw bitcode regardless of the output device.

=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
