[llvm-commits] CVS: llvm/utils/profile.pl
Chris Lattner
lattner at cs.uiuc.edu
Tue Oct 28 16:12:01 PST 2003
Changes in directory llvm/utils:
profile.pl added (r1.1)
---
Log message:
Helper script for collecting profiling instrumentation. Simply run
$ profile.pl foo.bc <args>
... to instrument, run, then print a program profile!
---
Diffs of the changes: (+44 -0)
Index: llvm/utils/profile.pl
diff -c /dev/null llvm/utils/profile.pl:1.1
*** /dev/null Tue Oct 28 16:11:41 2003
--- llvm/utils/profile.pl Tue Oct 28 16:11:31 2003
***************
*** 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";
More information about the llvm-commits
mailing list