clone

Date:

01-09-2012

NAME

clone_enable, CLONE, clone_disable, NOCLONE, clone_reset, RESETCLONE - enables, disables, or resets the cloning state

SYNOPSIS

#pragma _CRI clone_enable
#pragma _CRI clone_disable
#pragma _CRI clone_reset
!DIR$ CLONE
!DIR$ NOCLONE
!DIR$ RESETCLONE

DESCRIPTION

These directives behave similarly in both C/C++ and Fortran. The C/C++ directive names are used below to explain their behaviors.

Cloning is the attempt to duplicate a procedure under certain conditions and replace dummy arguments with associated constant actual arguments throughout the cloned procedure. The compiler attempts to clone a procedure when a call site contains actual arguments that are scalar integer and/or scalar logical constants. When the constants are exposed to the optimizer, it can generate more efficient code.

The clone_enable, clone_disable, clone_reset directives control whether cloning is attempted over a range of code.

If clone_enable is in effect, cloning is attempted at call sites. If clone_disable is in effect, cloning is not attempted at call sites. The clone_reset directive returns the cloning to the state specified on the compiler command line. These directives remain in effect until the opposite directive is encountered or until the end of the program unit.

Use compile options -hipaN or -OipaN where N is equal to, or greater than 4 to enable all cloning directives. Use -hnegmsgs if you would like to see messages which highlight where cloning did not occur.

SEE ALSO

clone_always(7), intro_directives(7)