IBM AIX Flag Disclosure
SPEC CPU2000  
Last Revised 24 October, 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 Invocation
===================
xlc    Invokes the compiler for C source files with a default language level
       of ansi and specifies that it allow type-based aliasing.

cc     Invokes the compiler for C source files with a default language of
       extended and specifies that it provide compatibility with older IBM
       compilers and allow placement of string literals or constant values in
       read/write storage. cc does not conform to the ISO/ANSI C standard.


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. The qipa level defaults to level=1.

-O5            Equivalent to -O3 -qipa=level=2 -qhot with automatic generation
               of architecture ( -qarch= ) and tuning ( -qtune= ) options ideal
	       for that platform.
          
-Q, -qinline   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. -qinline is an 
	       alias for -Q.
          
-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=1  Turns on interprocedural analysis with inlining, limited alias
               analysis, and limited call-site tailoring. This is the default
               level of -qipa.
               
-qipa=level=2  Turns on interprocedural analysis with inlining, cloning, full 
               alias analysis, constant propagation, call-site tailoring, and 
               dead code removal.

-qinline       Alias for -Q. See -Q.

-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:
    -p ProgramName    The name of the executable program to optimize.

    -v                Selects verbose output during processing/compilation

    -x Command        Specifies the command used for invoking the instrumented
                      program.  All the arguments after the -x flag are used
		      for the invocation. 

    -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.