User`s guide

Compiler Directives and Assertions [C]
However, if we add a #pragma mta may reorder
SYNCARRAY$ directive before the loop, each reference to
SYNCARRAY$ may occur before or after any of the other references.
Explicit serialization is not imposed, and the loop is parallelizable.
void may_reorder_example(sync int SYNCARRAY$[10000])
{
#pragma mta may reorder SYNCARRAY$
for (int i = 0; i < 10000; i++) {
SYNCARRAY$[i] = 0;
}
}
#pragma mta assert may not reorder variable-list
#pragma mta may not reorder variable-list
This directive is used to deactivate the preceding may reorder
directive. The following example tells the compiler that accesses to
SYNCARRAY$ can be reordered only in the loop shown.
void maynot_reorder_example(sync int SYNCARRAY$[10000])
{
int i;
for (i = 0; i < 10000; i++) {
#pragma mta may reorder SYNCARRAY$
SYNCARRAY$[i] = 0;
#pragma mta may not reorder SYNCARRAY$
}
}
#pragma mta assert noalias variable-list
#pragma mta noalias variable-list
This directive tells the compiler that the variables in variable-list are
not used as aliases for any other variables. This information allows
the compiler to perform a more accurate dependence analysis of
loops involving these variables and to more aggressively parallelize
the code. This directive must follow the declaration of the variables
in variable-list and must lie within the scope in which these variables
are defined. The directive may also take the form #pragma
noalias variable-list.
#pragma mta assert par_newdelete
This directive is placed before the definition of a new array to
indicate that when the elements of the array are constructed, the
constructors should be invoked in parallel. To do this, use the
following syntax for automatic or external definitions.
#pragma mta assert par_newdelete
aclass foo[100];
In this case, the destructors are not fired in parallel; there is no way to
cause destructors to be fired in parallel for these kinds of definitions.
S247920 129