Closed Bug 425626 Opened 12 years ago Closed 12 years ago
Enable PGO with Sun Studio on Solaris
For firefox, the profile will be in directory objdir/browser.profile. I changed rules.mk because bug 402824.
Changes: Right place for PROFILE_GEN_*; Add -xlinkopt=2 for SPARC, it gives ~3% performance enhancement. From manpage of CC. -xlinkopt[=level] (SPARC) Perform link-time optimizations on relo- catable object files. The link optimizer performs a number of advanced performance optimizations on the binary object code at link-time. The value level sets the level of optimizations performed, and must be 0, 1, or 2. The optimization levels are: 0 The link optimizer is disabled. (This is the default.) 1 Perform optimizations based on control flow analysis, including instruction cache coloring and branch optimizations, at link time. 2 Perform additional data flow analysis, including dead-code elimination and address computation simplification, at link time. Specifying -xlinkopt without a level parameter implies -xlinkopt=1. These optimizations are performed at link time by analyzing the object binary code. The object files are not rewritten but the resulting executable code may differ from the original object codes. This option is most effective when used to compile the whole program, and with profile feedback. When compiling in separate steps, -xlinkopt must appear on both compile and link steps: example% CC -c -xlinkopt a.cc b.cc example% CC -o myprog -xlinkopt=2 a.o Note that the level parameter is only used when the compiler is linking. In the example above, the link optimizer level is 2 even though the object binaries were compiled with an implied level of 1. Do not use the -zcompreloc linker option when you compile with -xlinkopt. You must use -xlinkopt on at least some of the compilation commands for -xlinkopt to be useful at link time. The optimizer can still perform some limited optimizations on object binaries not com- piled with -xlinkopt. -xlinkopt will optimize code coming from static libraries that appear on the compiler command line, but it will skip and not optimize code com- ing from shared (dynamic) libraries that appear on the command line. You can also use -xlinkopt when building shared libraries (compiling with -G ). The link optimizer is most effective when used with run-time profile feedback. Profiling reveals the most and least used parts of the code and directs the optimizer to focus its effort accord- ingly. This is particularly important with large applications where optimal placement of code per- formed at link time can reduce instruction cache misses. Typically, this would be compiled as fol- lows: example% CC -o progt -xO5 -xprofile=collect:prog file.cc example% progt example% CC -o prog -xO5 -xprofile=use:prog -xlinkopt file.cc For details on using profile feedback, see -xpro- file Note that compiling with this option increases link time slightly. Object file sizes also increase, but the size of the executable remains the same. Compiling with -xlinkopt and -g increases the size of the executable by including debugging information.
Comment on attachment 312701 [details] [diff] [review] patch r=me *without* the rules.mk change. Simply removing that bit isn't the right way to fix that. See bug 402824 for discussion on the right way to fix it. I'm fine with the rest of this patch.
Attachment #312701 - Flags: review?(ted.mielczarek) → review+
It's not the right way to fix it; it's not the right way to do it, either. I agree to leave it as bug 402824, and go with the rest first.
Comment on attachment 312701 [details] [diff] [review] patch request approval1.9 with no change to rules.mk It only affects Solaris build.
Attachment #312701 - Flags: approval1.9?
Comment on attachment 312701 [details] [diff] [review] patch a1.9=beltzner
Attachment #312701 - Flags: approval1.9? → approval1.9+
Checking in configure.in; /cvsroot/mozilla/configure.in,v <-- configure.in new revision: 1.1977; previous revision: 1.1976 done Checking in xpcom/reflect/xptcall/src/md/unix/Makefile.in; /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in,v <-- Makefile.in new revision: 1.102; previous revision: 1.101 done
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.