Monitoring Compiler-generated Code

The options described below provide monitoring the outcome of Intel compiler-generated code without interfering with the way your program runs.

Specifying Structure Tag Alignments, -Zp

Use the -Zp{n} option to determine the alignment constraint for structure declarations, on n-byte boundary (n = 1, 2, 4, 8, 16). Generally, smaller constraints result in smaller data sections while larger constraints support faster execution.

For example, to specify 2 bytes as the alignment constraint for all structures and unions in the file prog1.cpp, use the following command:

IA-32 systems: prompt>ifc -Zp2 prog1.f
The default for IA-32 systems is -Zp4.

Itanium(TM)-based systems: prompt>efc -Zp2 prog1.f
The default for Itanium-based systems is -Zp8.

The -Zp16 option enables you to align Fortran structures such as common blocks. For Fortran structures, see STRUCTURE statement in Chapter 10 of IntelŪ Fortran Programmer's Language Reference Manual.

Allocation of Zero-initialized Variables, -nobss_init

By default, variables explicitly initialized with zeros are placed in the BSS section. But using the
-nobss_init
option, you can place any variables that are explicitly initialized with zeros in the DATA section if required.

Avoiding Incorrect Decoding of Certain 0f Instructions (IA-32 only)

Some instructions have 2-byte opcodes in which the first byte contains 0f. In rare cases, the PentiumŪ processor can decode these instructions incorrectly. Specify the -0f_check option to avoid the incorrect decoding of these instructions.

Enable Floating-point Division Check (IA-32 Only)

The -fdiv_check option enables a software patch for the floating-point division flaw which exists on some steppings of the PentiumŪ processor. This patch ensures that the precision of your floating-point division calculations are correct. This option is enabled by default or if you specify the -tpp5 option.

When the -fdiv_check option is enabled, the compiler uses libm_chk.a (or libmmtck.a, if -mt is also specified; and libmmdck.a if -md is also specified), which are special versions of the library to link your programs. These files are linked automatically. The libm_chk.a (or libmmtck.a or libmmdck.a) libraries contain the support routines for the floating-point division software patch and checked versions of the affected math library functions.

The -fdiv_check option disables the software patch for the floating-point division flaw regardless of whatever other options are specified. When you specify -fdiv_check, the compiler uses simple hardware instructions for floating-point division and affected intrinsics. If you specify the -fdiv_check option, the compiler does not need a special version of optimized math library to link your programs. Similarly, if you choose not to use the optimized math library, you must specify -fdiv_check. This option is the default if you specify the -tpp6 option.