behavior is undefined. FREQUENTLY_CALLED pragma is independent of +Oprofile=use in that it overrides any dynamically obtained profile information.

HDR_STOP Pragma

#pragma HDR_STOP

This pragma instructs the compiler to stop precompiling headers.

HIDDEN Pragma

#pragma hidden [symbol{,symbol}]

The specified symbols, or all symbols (if no symbols are specified), are assigned the hidden export class. The hidden export class is similar to the protected export class. These symbols will not be preempted by symbols from other load modules, so the compiler may bypass the linkage table for both code and data references and bind them to locally defined code and data symbols.

In addition, hidden symbols will not be exported outside the current load module. The linker may eliminate them from a shared library, but in an executable, they remain accessible to the debugger unless -Oprocelimis also specified. This is the pragma equivalent of -Bhiddenand is global in scope.

HP_DEFINED_EXTERNAL Pragma

#pragma HP_DEFINED_EXTERNAL name1[,name2,...nameN]

The specified symbols, or all undefined symbols (if no list is provided), are assigned to the default export class. Additionally, the compiler will inline the import stub for calls to these symbols. No compile time binding of these symbols will be done. All references to these symbols will be through the linkage table, so an unnecessary performance penalty will occur if extern is applied to a listed symbol that is resolved in the same load module. This is the pragma equivalent of -Bexternand is global in scope.

This pragma is equivalent to #pragma EXTERN.

HP_DEFINED_INTERNAL Pragma

#pragma HP_DEFINED_INTERNAL name1[,name2,...nameN]

The specified symbols, or all symbols (if no symbols are specified), are assigned the protected export class. That means these symbols will not be preempted by symbols from other load modules, so the compiler may bypass the linkage table for both code and data references and bind them to locally defined code and data symbols. This pragma is equivalent to -Bprotectedand is global in scope.

This pragma is equivalent to #pragma PROTECTED.

IF_CONVERT Pragma

#pragma IF_CONVERT

This block-scoped pragma instructs the compiler to If-Convert the current scope. There is no command-line option equivalent.

If-Conversion is a compiler process that eliminates conditional branches by the use of predicates. The compiler is instructed to If-Convert all non-loop control flow nested within the current block.

Without this pragma, the compiler would employ its own heuristics to determine whether to perform If-Conversion. With this pragma, If-Conversion is always performed.

If-Convert can be specified in a loop containing conditional branches other than the loop-back branch. This makes it more likely the compiler will modulo schedule the loop, as loops containing conditional branches cannot be modulo scheduled. The pragma can also be used for non-looping constructs.

Other Pragmas 107