SPRU514Z July 2001 – October 2023 SM320F28335-EP
Following are detailed descriptions of miscellaneous options:
--advice:performance[=all|none] | If
Trigonometric Math Unit (TMU) support is enabled (--tmu_support) and
--fp_mode=strict, advice is generated if the compiler encounters
functions that could be replaced with TMU hardware instructions
under --fp_mode=relaxed. These include floating point division,
sqrt, sin, cos, atan, and atan2. In addition, when compiling for EABI with --float_support=fpu32, enabling this option causes advice to be provided if double floating point operations are detected. Since EABI doubles are 64 bits, consider changing doubles to floats for improved performance in FPU32-mode. |
--float_operations_allowed= {none|all|32|64} | Restricts types of floating point operations allowed. The default is all. If set to none, 32, or 64, the application is checked for operations performed at runtime. For example, if --float_operations_allowed=32 is specified on the command line, the compiler issues an error if a double precision operation will be generated. This can be used to ensure that double precision operations are not accidentally introduced into an application. The checks are performed after relaxed mode optimizations have been performed, so illegal operations that are completely removed result in no diagnostic messages. |
--fp_mode={relaxed|strict} | The
default floating-point mode is strict. To enable relaxed
floating-point mode use the --fp_mode=relaxed option. Relaxed
floating-point mode causes double-precision floating-point
computations and storage to be converted to single-precision
floating-point where possible. This behavior does not conform with
ISO, but it results in faster code, with some loss in accuracy. The
following specific changes occur in relaxed mode:
|
--fp_reassoc={on|off} | Enables or disables the reassociation of floating-point arithmetic. The default is on. |
Because floating-point values are of limited precision, and because floating-point operations round, floating-point arithmetic is neither associative nor distributive. For instance, (1 + 3e100) - 3e100 is not equal to 1 + (3e100 - 3e100). If strictly following IEEE 754, the compiler cannot, in general, reassociate floating-point operations. Using --fp_reassoc=on allows the compiler to perform the algebraic reassociation, at the cost of a small amount of precision for some operations. | |
When --fp_reassoc=on, RPT MACF32 instructions may be generated. Because the RPT MACF32 instruction computes two partial sums and adds them together afterward to compute the entire accumulation, the result can vary in precision from a serial floating-point multiply accumulate loop. | |
--fp_single_precision_constant | Causes all unsuffixed
floating-point constants to be treated as single precision values.
By default, if this option is not used, such constants are
implicitly converted to double-precision constants as expected for
EABI output. If your floating-point constants always fit within the
range supported for 32-bit floats, treating them as such can improve
performance. This option may be used with any settings for the --fp_mode and --float_support options. |
--preinclude=filename | Includes the source code of filename at the beginning of the compilation. This can be used to establish standard macro definitions. The filename is searched for in the directories on the include search list. The files are processed in the order in which they were specified. |
--printf_support={full| nofloat|minimal} |
Enables support for smaller, limited versions of the printf
function family (sprintf, fprintf, etc.) and the scanf function
family (sscanf, fscanf, etc.) run-time-support functions. The valid
values are:
|
There is no run-time error checking to detect if a format specifier is used for which support is not included. The --printf_support option precedes the --run_linker option, and must be used when performing the final link. | |
--sat_reassoc={on|off} | Enables or disables the reassociation of saturating arithmetic. |