HP aC++/HP C A.06.28 Programmer's Guide Integrity servers (769150-001, March 2014)

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 -Oprocelim is also specified. This is the pragma equivalent of -Bhidden and 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 -Bextern and
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 -Bprotected and 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