# General Compiler Directives

Compiler directives are specially formatted comments in the source file which provide information to the compiler. Some directives, such as line length or conditional compilation directives provide the compiler information which is used in interpreting the source file. Other directives, such as optimization directives provide hints or suggestions to the compiler, which, in some cases, may be ignored or overridden by the compiler based on the heuristics of the optimizer and/or code generator. You do not need to specify a compiler option to enable general directives. If the directive is ignored by the compiler, no diagnostic message is issued.

The following general compiler directives are available:

- ALIAS

  Specifies an alternate external name to be used when referring to external subprograms.

- ASSUME

  Provides heuristic information to the compiler optimizer.

- ASSUME_ALIGNED

  Specifies that an entity in memory is aligned.

- ATTRIBUTES

  Specifies properties for data objects and procedures.

- BLOCK_LOOP and NOBLOCK_LOOP

  Enables or disables loop blocking for the immediately following nested DO loops.

- DECLARE and NODECLARE

  Generates or disables warnings for variables that have been used but not declared.

- DEFINE and UNDEFINE

  Defines (or undefines) a symbolic variable whose existence (or value) can be tested during conditional compilation.

- DISTRIBUTE POINT

  Suggests a location at which a DO loop may be split.

- FIXEDFORMLINESIZE

  Sets the line length for fixed-form source code.

- FMA and NOFMA

  Enables (or disables) the compiler to allow generation of fused multiply-add (FMA) instructions, also known as floating-point contractions.

- FREEFORM and NOFREEFORM

  Specifies free-format or fixed-format source code.

- IDENT

  Specifies an identifier for an object module.

- IF and IF DEFINED

  Specifies a conditional compilation construct.

- INLINE, FORCEINLINE, NOINLINE

  Tell the compiler to perform the specified inlining on routines within statements or DO loops.

- INTEGER

  Specifies the default integer kind.

- IVDEP

  Assists the compiler's dependence analysis of iterative DO loops.

- LOOP COUNT

  Specifies the typical trip count for a DO loop; this assists the optimizer.

- MESSAGE

  Specifies a character string to be sent to the standard output device during the first compiler pass.

- NOFUSION

  Prevents a loop from fusing with adjacent loops.

- OBJCOMMENT

  Specifies a library search path in an object file.

- OPTIMIZE and NOOPTIMIZE

  Enables or disables optimizations for the program unit.

- OPTIONS

  Affects data alignment and warnings about data alignment.

- PACK

  Specifies the memory alignment of derived-type items.

- PARALLEL and NOPARALLEL

  Facilitates or prevents auto-parallelization by assisting the compiler's dependence analysis of theimmediately following DO loop.

- PREFETCH and NOPREFETCH

  Enables or disables hint to the compiler to prefetch data from memory.

- PSECT

  Modifies certain characteristics of a common block.

- REAL

  Specifies the default real kind.

- SIMD

  Requires and controls SIMD vectorization of loops.

- STRICT and NOSTRICT

  Disables or enables language features not found in the language standard specified on the command line.

- UNROLL and NOUNROLL

  Tells the compiler's optimizer how many times to unroll a DO loop or disables the unrolling of a DO loop.

- UNROLL_AND_JAM and NOUNROLL_AND_JAM

  Enables or disables loop unrolling and jamming.

- VECTOR and NOVECTOR

  Overrides default heuristics for vectorization of DO loops.

Product and Performance Information
Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex. Notice revision #20201201

## See Also

Syntax Rules for Compiler Directives
Rules for General Directives that Affect DO Loops