HP aC++/HP C A.06.28 Programmer's Guide Integrity servers (769150-001, March 2014)
STDC FENV_ACCESS Pragma
#pragma STDC FENV_ACCESS ON
#pragma STDC FENV_ACCESS OFF
This pragma provides a means to inform the compiler when a program might access the
floating-point environment to test flags or run under non-default modes. Use of the pragma allows
certain optimizations that could subvert flag tests and mode changes such as global common sub
expression elimination, code motion, and constant folding.
The pragma can be placed either outside external declarations or preceding all explicit declarations
and statements inside a compound statement. When outside external declarations, the pragma
takes effect from its occurrence until another FENV_ACCESS pragma is encountered or until the
end of the translation unit. When inside a compound statement, the pragma is in effect from its
occurrence until another FENV_ACCESS pragma is encountered within the nested compound
statement or until the end of the compound statement. At the end of a compound statement, the
state for the pragma is restored to its condition just before the compound statement.
If the pragma is used in any other context, the behavior is undefined. If part of a program tests
flags or runs under non-default mode settings but was translated with the state for the FENV_ACCESS
pragma off, then the behavior of the program is undefined.
Also see the ISO/IEC 9899 Standard.
UNROLL_FACTOR Pragma
#pragma UNROLL_FACTORn
#pragma UNROLLn
#pragma UNROLL (n)
This block-scoped pragma applies the unroll factor for a loop containing the current block. You
can apply an unroll factor that you think is best for the given loop or apply no unroll factor to the
loop. If this pragma is not specified, the compiler uses its own heuristics to determine the best unroll
factor for the inner loop.
A user specified unroll factor will override the default unroll factor applied by the compiler.
Specifying n=1 will prevent the compiler from unrolling the loop.
Specifying n=0 allows the compiler to use its own heuristics to apply the unroll factor.
Note that this option has no effect on loop unroll-and-jam.
NOTE: UNROLL_FACTOR pragma will be ignored if it is placed in a loop other than the innermost
loop. The UNROLL pragma must be immediately followed with a loop statement and will be ignored
if it is not an innermost loop.
OMP ATOMIC Pragma
#pragma omp atomic
expression-stmt
where expression-stmt must have one of the following forms:
• x binop = expr
• x++
• ++x
• x--
• --x
Here, x is an lvalue expression with scalar type and expr is an expression with scalar type that
does not reference the object designated by x.
110 Pragma Directives and Attributes