[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