User`s guide

Compiler Directives and Assertions [C]
This appendix provides a complete list of compiler directives specific to the
Cray XMT and accepted by the Cray XMT compiler.
C.1 Compilation Directives
A compilation directive is a command to compile a program in a particular way.
#pragma mta autotouch [on|off|default]
This directive automatically applies the touch generic whenever
a future variable is referenced. The on option enables automatic
touching, the off option disables automatic touching, and the
default option reverts from autotouch to the default mode for that
source module, as determined by the compile-line flags.
#pragma mta adjust constructor priority adj
This directive modifies the priority assigned to static constructors in a
file. The adjusted priority is the priority just before the directive plus
adj. The adjustment variable adj must be an integer in the range of
-255 to 255, and the new priority must be in the range of 0 to 255.
This directive remains in effect from the point at which it occurs
until the end of the file or until another directive of the same kind
is encountered.
#pragma mta complex limited range [on|off|default]
This directive specifies whether complex multiplication and
division may be performed using the usual mathematical formulas
for complex arithmetic or safer but slower arithmetic. The usual
mathematical formulas for complex arithmetic use the following
format:
(a,b)*(c,d) = (ac-bd,ad+bc)
(a,b)/(c,d) = ((ac+bd)/(cc+dd), (bc-ad)/(cc+dd))
The previous formulas, however, may cause spurious Not a Number
(NaN) results or infinities if the norm of either complex number is
larger than the maximum expressible real number or if the norm of
the denominator of a division is smaller than the smallest expressible
real number. Additionally, these formulas may not be as accurate as
S247920 109