Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 12/16/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

prof-gen, Qprof-gen

Produces an instrumented object file that can be used in profile guided optimization.

Syntax

Linux:

-prof-gen[=keyword[, keyword],...]

-no-prof-gen

macOS:

-prof-gen[=keyword[, keyword],...]

-no-prof-gen

Windows:

/Qprof-gen[:keyword[,keyword],...]

/Qprof-gen-

Arguments

keyword

Specifies details for the instrumented file. Possible values are:

default

Produces an instrumented object file. This is the same as specifying the [Q]prof-gen option with no keyword.

srcpos

Produces an instrumented object file that includes extra source position information.

globdata

Produces an instrumented object file that includes information for global data layout.

[no]threadsafe

Produces an instrumented object file that includes the collection of PGO data on applications that use a high level of parallelism. If [Q]prof-gen is specified with no keyword, the default is nothreadsafe.

Default

-no-prof-gen or /Qprof-gen-

Profile generation is disabled.

Description

This option produces an instrumented object file that can be used in profile guided optimization. It gets the execution count of each basic block.

You can specify more than one setting for [Q]prof-gen. For example, you can specify the following:

-prof-gen=srcpos -prof-gen=threadsafe (Linux* and macOS) 
-prof-gen=srcpos, threadsafe (this is equivalent to the above)
/Qprof-gen:srcpos /Qprof-gen:threadsafe (Windows*)
/Qprof-gen:srcpos, threadsafe (this is equivalent to the above)

If you specify keyword srcpos or globdata, a static profile information file (.spi) is created. These settings may increase the time needed to do a parallel build using -prof-gen, because of contention writing the .spi file.

These options are used in phase 1 of the Profile Guided Optimizer (PGO) to instruct the compiler to produce instrumented code in your object files in preparation for instrumented execution.

When the [Q]prof-gen option is used to produce an instrumented binary file for profile generation, some optimizations are disabled. Those optimizations are not disabled for any subsequent profile-guided compilation with option [Q]prof-use that makes use of the generated profiles.

IDE Equivalent

Visual Studio: General > Profile Guided Optimization

General > Code Coverage Build Options

Eclipse: Optimization > Profile Guided Optimization

Xcode: None

Alternate Options

None