=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 bitcode only and doesn't perform any optimizations.
The output of stkrc (a bitcode 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
bitcode 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
