aboutsummaryrefslogtreecommitdiffstats
path: root/utils/profile.pl
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-10-28 22:11:31 +0000
committerChris Lattner <sabre@nondot.org>2003-10-28 22:11:31 +0000
commitad910ebe70644040701f8f39fd96eed78ca2ed23 (patch)
tree3bcea5604010c9ee18fd6742cc7278eec6d84760 /utils/profile.pl
parent33f1ca7d8a86ce4933e89ddb6671924b3ec03923 (diff)
downloadexternal_llvm-ad910ebe70644040701f8f39fd96eed78ca2ed23.zip
external_llvm-ad910ebe70644040701f8f39fd96eed78ca2ed23.tar.gz
external_llvm-ad910ebe70644040701f8f39fd96eed78ca2ed23.tar.bz2
Helper script for collecting profiling instrumentation. Simply run
$ profile.pl foo.bc <args> ... to instrument, run, then print a program profile! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9560 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/profile.pl')
-rwxr-xr-xutils/profile.pl44
1 files changed, 44 insertions, 0 deletions
diff --git a/utils/profile.pl b/utils/profile.pl
new file mode 100755
index 0000000..27bfd71
--- /dev/null
+++ b/utils/profile.pl
@@ -0,0 +1,44 @@
+#!/usr/bin/perl -w
+#
+# Program: profile.pl
+#
+# Synopsis: Insert instrumentation code into a program, run it with the JIT,
+# then print out a profile report.
+#
+# Syntax: profile.pl [OPTIONS] bytecodefile <arguments>
+#
+# OPTIONS may include one or more of the following:
+# NONE SO FAR
+#
+#
+
+
+my $ProfilePass = "-insert-function-profiling";
+
+# Parse arguments...
+while (scalar(@ARGV) and ($_ = $ARGV[0], /^[-+]/)) {
+ shift;
+ last if /^--$/; # Stop processing arguments on --
+
+ # List command line options here...
+ #if (/^-enable-foo$/) { $FOO = 1; next; }
+
+ print "Unknown option: $_ : ignoring!\n";
+}
+
+die "Must specify LLVM bytecode file as first argument!" if (@ARGV == 0);
+
+my $BytecodeFile = $ARGV[0];
+
+shift @ARGV;
+
+my $LLIPath = `which lli`;
+$LLIPath = `dirname $LLIPath`;
+chomp $LLIPath;
+
+my $LibProfPath = $LLIPath . "/../../lib/Debug/libprofile_rt.so";
+
+system "opt $ProfilePass < $BytecodeFile | lli -load $LibProfPath - " .
+ (join ' ', @ARGV);
+
+system "llvm-prof $BytecodeFile";