=pod

=head1 NAME

llvm-prof - print execution profile of LLVM program

=head1 SYNOPSIS

B<llvm-prof> [I<options>] [I<bitcode file>] [I<llvmprof.out>]

=head1 DESCRIPTION

The B<llvm-prof> tool reads in an F<llvmprof.out> file (which can
optionally use a specific file with the third program argument), a bitcode file
for the program, and produces a human readable report, suitable for determining
where the program hotspots are.

This program is often used in conjunction with the F<utils/profile.pl>
script.  This script automatically instruments a program, runs it with the JIT,
then runs B<llvm-prof> to format a report.  To get more information about
F<utils/profile.pl>, execute it with the B<-help> option.

=head1 OPTIONS

=over

=item B<--annotated-llvm> or B<-A>

In addition to the normal report printed, print out the code for the
program, annotated with execution frequency information. This can be
particularly useful when trying to visualize how frequently basic blocks
are executed.  This is most useful with basic block profiling
information or better.

=item B<--print-all-code>

Using this option enables the B<--annotated-llvm> option, but it
prints the entire module, instead of just the most commonly executed
functions.

=item B<--time-passes>

Record the amount of time needed for each pass and print it to standard
error.

=back

=head1 EXIT STATUS

B<llvm-prof> returns 1 if it cannot load the bitcode file or the profile
information. Otherwise, it exits with zero.

=head1 AUTHOR

B<llvm-prof> is maintained by the LLVM Team (L<http://llvm.org/>).

=cut
