This option enables additional interprocedural optimizations for single
file compilation. These optimizations are a subset of full intra-file
interprocedural optimizations. One of these optimizations enables the
compiler to perform inline function expansion for calls to functions
defined within the current source file.

Instrument program for profiling for the first phase of
two-phase profile guided otimization. This instrumentation gathers information
about a program's execution paths and data values but does not gather
information from hardware performance counters. The profile instrumentation
also gathers data for optimizations which are unique to profile-feedback
optimization.

Instructs the compiler to produce a profile-optimized
executable and merges available dynamic information (.dyn)
files into a pgopti.dpi file. If you perform multiple
executions of the instrumented program, -Qprof_use merges
the dynamic information files again and overwrites the
previous pgopti.dpi file.
Without any other options, the current directory is
searched for .dyn files

Specifies the percentage multiplier that should be applied to all inlining options
that define upper limits. The value is a positive integer specifying the
percentage value. The default value is 100 (a factor of 1).

Enables use of faster but slightly less accurate code sequences for math
functions, including sqrt, reciprocal sqrt, divide and reciprocal. When
compared to strict IEEE* precision, this option slightly reduces the
accuracy of floating-point calculations performed by these functions,
usually limited to the least significant digit.
This option also performs reassociation transformations, which can alter the
order of operations, over a larger scope. The increased reasssociation
enables generation of more optimal sequences of floating-point multiply-add
instructions than not using this option. Note that use of floating-point
multiply-add can cause programs to produce different numerical results due
to changes in rounding.

Tells the compiler to assume the program does adhere to
the rules defined in the ISO C Standard. The default is to not assume such
adherence. If your C/C++ program adheres to these
rules, then -ansi-alias will allow the compiler to optimize
more aggressively. If it doesn't adhere to these
rules, then assuming so can cause the compiler to generate
incorrect code.

Instructs the compiler to analyze and transform the program so that 64-bit pointers are shrunk to 32-bit
pointers, and 64-bit longs (on Linux) are shrunk into 32-bit longs wherever it is legal and safe to do so.
In order for this option to be effective the compiler must be able to optimize using the -ipo option and
must be able to analyze all library or external calls the program makes.
This option requires that the size of the program executable never exceeds 2 (to the 32nd power) bytes and
all data values can be represented within 32 bits. If the program can run correctly in a 32-bit system,
these requirements are implicitly satisfied. If the program violates these size restrictions, unpredictable
behavior might occur.

The -Wl option directs the compiler to pass a list of arguments
to the linker. In this case, "-z muldefs" is passed to the
linker. For the Gnu linker (ld), the "-z keyword" option accepts
several recognized keywords. Keyword "muldefs" allows multiple
definitions. The muldefs keyword will enable, for example,
linking with third party libraries like SmartHeap from
Microquill.