The Alpha version of the Visual C++ compiler includes several platform-specific compiler options. The /QAgl and /QAgq options control the level of granularity at which the compiler accesses data. The /QAieeen options control the behavior of nonfinite floating-point values. The /QAOun options set loop unrolling.
For multithreaded applications, the /QAgl option causes the compiler to access data in units of longwords (4 bytes of data on 4-byte address boundaries) as required by Windows NT. This is the default.
On Alpha systems, this may produce slightly less efficient code than quadword granularity.
For single-threaded applications, the /QAgq option allows the compiler to manipulate data in units of quadwords (8 bytes of data on 8-byte boundaries). If you know that a single-threaded application will have no data accessible to multiple threads of execution, use this option to produce the most efficient code on Alpha systems. Multithreaded applications may not operate correctly with this option.
The /QAieee and /QAieee1 options are identical and specify that the compiled code supports IEEE floating-point NaNs, infinites, and denormals. Use one of these options for any application requiring typical IEEE floating-point exception behavior.
The /QAieee0 option specifies that the compiled code does not support IEEE floating-point NaNs, infinites, and denormals. Underflows are quickly forced to zero, and the use of a NaN or Infinity raises an exception. This option is the default and should be used for all applications except those requiring IEEE-compliant floating-point exception behavior because it produces the fastest execution speed. Because run-time library routines may still produce NaNs and denormals, the use of _ _matherr is also recommended.
The /QAieee2 option is the same as /QAieee1 but also enables IEEE inexact exceptions. Use this option only for the rare application that requires the IEEE inexact exception to be raised.
The /QAOun option sets loop unrolling, where n specifies the number of iterations of the loop to unroll. If you set n to 0, the compiler chooses the number of iterations.
Note that the /Os compiler option causes /QAOu1, which disables loop unrolling.
The /QAltls option enables the compiler to generate extra code to reference data in thread-local storage when its size exceeds 32K. Enabling large thread-local storage exacts a moderate perfomance penalty on compiled code. Because of the extra code generated by the use of this switch, use it only when necessary. Linker error LNK2004 indicates that the /QAltls switch might be necessary.