IBM AIX Flag Disclosure
SPEC CPU2000  
Last Revised 27 September, 2001 


Source Level Portability Options
================================
-DHOST_WORDS_BIG_ENDIAN  (176.gcc)
               Host system is big-endian.

-DAIX  (186.crafty)
               Sets some basic parameters like endian-ess, OS type, and ANSI 
               language extensions to be compatible with an AIX system.

-DNEED_EXPLICIT_SPECIALIZATION  (252.eon)
               Supply function definitions with explicit types in two cases
               where templatized versions fail to compile.

-DSPEC_CPU2000_AIX  (253.perlbmk)
               Compile the SPEC CPU2000 modified perl for an AIX system.

-DSYS_IS_BSD  (254.gap)
               Compile gap for a BSDish system.

-DSYS_STRING_H  (254.gap) 
               Do not explicitly include string.h
               
-DSYS_HAS_TIME_PROTO  (254.gap)
               Do not supply prototypes for the time(), times() and getrusage()
               functions.
               
-DSYS_HAS_MALLOC_PROTO  (254.gap)
               Do not supply prototypes for malloc() and free().
               
-DSYS_HAS_CALLOC_PROTO (254.gap)
               Do not supply a prototype for calloc().

-DHAVE_SIGNED_CHAR  (300.twolf)
               System allows signed char type.


Compiler Options
================
-ma            Use built-in alloca() function.

-O             Performs optimizations that the compiler developers considered 
               the best combination for compilation speed and runtime 
               performance. 

-O3            Perform some memory and compile time intensive optimizations in 
               addition to those executed with -O.  The -O3 specific 
               optimizations have the potential to slightly alter the semantics 
               of a user's program.  Optimizations may include, but are not
               limited to: Aggressive code motion, and scheduling on 
               computations that have the potential to raise an exception; 
               Relaxed conformance to IEEE rules in cases where the difference 
               in the results is not important to an application;  Rewriting of 
               floating point expressions. 

-O4            Equivalent to -O3 -qipa -qhot with automatic generation of
               architecture ( -qarch= )and tuning ( -qtune= )options ideal for
               that platform.

-O5            Equivalent to -O3 -qipa=level=2 -qhot with automatic generation
               of architecture ( -qarch= ) and tuning ( -qtune= ) options ideal
	       for that platform.
          
-Q             The -Q option without any list inlines all appropriate 
               procedures, subject to limits on the number of inlined calls and 
               the amount of code size increase as a result.
          
-Q=xxx         Inline all functions that contain less than xxx lines of
               abstract code units.

-q64           Selects 64-bit compiler mode.

-qalign=natural The compiler maps structure members to their natural
                boundaries.

-qansialias    Use type-based aliasing during optimization

-qarch=ppc     Produces object code containing instructions that will run on 
               any of the 32-bit PowerPC hardware platforms.

-qarch=pwr3    Produces object code containing instructions that will run on 
               power3 processors.

-qarch=rs64b   Produces object code containing instructions that will run on 
               RS64-II processors.
               
-qessl=yes    Specifies that, if either -lessl or -lesslsmp are also
              specified, then Engineering and Scientific Subroutine Library
	      (ESSL) routines should be used in place of some Fortran 90
	      intrinsic procedures when there is a safe opportunity to do so.

-qfixed        Indicates that the input source program is in fixed form.  Allows
               fixed format Fortran 77 programs to be compiled using the xlf90 
               compiler invocation.

-qhot          perform high-order transformations on loops during optimization.
               
-qipa=level=2  Turns on interprocedural analysis with inlining, cloning, full 
               alias analysis, constant propagation, call-site tailoring, and 
               dead code removal.

-qipa=partition=large Specifies the size of the regions within the program to 
                      analyze. Larger partitions contain more procesures,
		      which result in better interprocedural analysis but
		      require more storage to optimize. 

-qlanglvl=ansi Compilation conforms to the ANSI standard. 

-qpdf/pdf2     Profile directed feedback optimization

-qsuffix=f=f90 Sets the suffix for source files to be .f90.  The .f90 suffix is
               required by xlf90 to compile Fortran 90 programs.

-qtune=604     Instruction selection, scheduling, and other implementation 
               dependent performance enhancements for the PowerPC 604/604e processor.

-qtune=pwr3    Instruction selection, scheduling, and other implementation 
               dependent performance enhancements for the Power3 processor.

-qtune=rs64b   Instruction selection, scheduling, and other implementation 
               dependent performance enhancements for the RS64-II processor.

Linker Options
==============
-lessl         Link the Engineering and Scientifc Subroutine Library (ESSL).

-lmass         Link the mathematical acceleration subsystem libraries (MASS),
               which contain libraries of tuned mathematical intrinsic 
               functions.  See www.austin.ibm.com/tech/MASS.

-lhmu          Link fast malloc libraries.  These libraries are part of the
               memdbg package that is included with IBM C compilers.

-lpdf          Routines used in the first pass of the profile directed 
               feedback process.  Routines from this library are not used in
               building the final executable. 
                
-bnso          Brings referenced library procedures into the object file  

-bI:/lib/syscalls.exp     Create statically linked object files (syscalls.exp
                          supplies the names of the routines that can be 
                          imported).

FDPR:
-----
The fdpr (feedback directed program restructuring) program optimizes the 
executable image of a program by collecting information on the behavior of 
the program while the program is used for some typical workload, and then 
creating a new version.  It is available on AIX Version 4 systems as part 
of the Performance Toolbox for AIX.

Options:
    -v        - Selects verbose output during processing/compilation
    -R2       - Employ a program-reordering technique in which the original 
                structure of the program, including traceback entries, is 
                preserved. 
    -R3       - Employ global reordering techniques that do not preserve
                debug information.