=pod

=head1 NAME

stkrc - Stacker Compiler

=head1 SYNOPSIS

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

=head1 DESCRIPTION

The B<stkrc> command is the compiler for the Stacker language. Stacker is a
simple stack based, Forth-like language that was written as a demonstration
language for LLVM. For details on the language, please see
L<http://llvm.org/docs/Stacker.html> . The B<stkrc> compiler is fairly 
minimal. It compiles to bytecode only and doesn't perform any optimizations.
The output of stkrc (a bytecode file) can be piped through other LLVM tools
for optimization and linking.

If F<filename> is omitted or is C<->, then B<stkrc> reads its input 
from standard input. This is useful for combining the tool into a pipeline.

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<.st>, 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<.st> 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<-o> F<filename>

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

=item B<-stats>

Print statistics acquired during compilation.

=item B<-time-passes>

Record the amount of time needed for each pass and print it to standard
error.

=item B<-f>

Force the output to be written. Normally, B<stkrc> won't overwrite an existing
bytecode file. This option overrides that behavior. 

=item B<-s> F<stacksize>

Specify the stack size for the program. The default stack size, 1024, should be
sufficient for most programs. For very large programs, especially those that 
recurse a lot, you might want to provide a larger value. Each unit of this
value consumes 8 bytes of memory.

=item B<-help>

Print a summary of command line options.

=back

=head1 EXIT STATUS

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

=head1 SEE ALSO

L<llvm-as>, L<http://llvm.org/docs/Stacker.html>

=head1 AUTHORS

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

=cut
