|
|
|
unroll
|
0 to 4294967295
(Integer value)
|
Loop expansion
The loop statements (for, while, and do-while) are expanded.
Use value to specify the maximum rate of increase in code size after loop expansion.
A value of 0 set as value has the same meaning as a value of 1.
If value is omitted, it is assumed that "2" has been specified.
This item is valid when the -Osize, -Ospeed, or -Odefault option is specified.
|
delete_static_func
|
on or off
|
Deleting unused static functions
If value is omitted, it is assumed that "on" has been specified.
|
inline_level
|
0 to 3
(Integer value)
|
Inline expansion for functions
value signifies the level of the expansion.
0: Suppresses all inline expansion including the function for which "#pragma inline" is specified.
1: Performs inline expansion for only a function for which "#pragma inline" is specified.
2: Distinguishes a function that is the target of expansion automatically and expands it.
3: Distinguishes the function that is the target of expansion automatically and expands it, while minimizing the increase in code size.
However, if 1 to 3 is specified, the function that is specified by "#pragma inline" may not be expanded according to the content of the function and the status of compilation.
If value is omitted, it is assumed that 2 has been specified.
This item is valid when the -Osize, -Ospeed, or -Odefault option is specified.
|
inline_size
|
0 to 65535
(Integer value)
|
Size for inline expansion
Specify the maximum increasing rate (%) of the code size up to which inline expansion is performed.
When 100 is specified, functions are expanded inline until the code size increases by 100%.
If value is omitted, it is assumed that 100 has been specified.
This item is valid when the -Oinline=2 option is specified (including when the -Ospped option is specified).
|
pipeline
[V1.03 or later]
|
on or off
|
Pipeline optimization
If value is omitted, it is assumed that "on" has been specified.
This item is valid when the -Osize, -Ospeed, or -Odefault option is specified.
|
tail_call
|
on or off
|
Replacement of a function call at the end of a function with br instruction
If "on" is specified, then if there is a function call at the end of a function, and certain conditions are met, a br instruction will be generated for that call rather than a call instruction. The ret code will be removed, reducing the code size.
However, some debug functions cannot be used.
If value is omitted, it is assumed that "on" has been specified.
|
merge_files
|
|
Merging of multiple files before compilation
If this option is omitted, compilation is done in input file units without merging the files.
Multiple C source files are merged then compiled, and output as a single file.
The output file name is the specified output file name when -o is specified. When -o is not specified, the output file name becomes the file name according to the interpretation when -o is omitted for the C source file name that has been specified first.
When there is only one input file or this option is specified simultaneously with -P, this option is invalid.
When this option is specified simultaneously with -S or -c, an empty file is created and its file name is in accordance with the interpretation when -o is omitted for the C source file name that has been specified second or later.
When this option is specified simultaneously with -Oinline_level, inline expansion is performed between files.
When linking an object file created with this option specified, operation is not guaranteed if linker option -delete, -rename, or -replace is specified simultaneously.
|
intermodule
|
|
Global optimization execution
The main optimization contents are the following.
- | Optimization using alias analysis between procedures |
- | Propagation of constants, such as parameters and return values |
|
whole_program
|
|
Optimization assuming that the whole program consists only of the input file
If this option is omitted, it is not assumed that the whole program consists only of the target file for compilation.
The compilation is performed assuming that the following conditions are met. Operation is not guaranteed if these conditions are not met.
- | The values and addresses of extern variables defined in the files to be compiled will not be modified or referenced from outside those files. |
- | If a file to be compiled calls a function defined outside the files to be compiled, the called function will never call a function in the files to be compiled. |
If this option is specified, it is assumed that the -Ointermodule option is specified.
If two or more C source files are input, it is assumed that the -Omerge_files option is specified.
|
alias
|
ansi or noansi
|
Optimization considering the type pointed to by pointers
If this option is omitted, noansi is assumed.
|
same_code
[V1.02 or later]
|
on or off
|
The multiple same instruction sequences that are found within a single section of the compilation unit are integrated into a function.
If value is omitted, it is assumed that on is specified.
This option is valid when the -Osize, -Ospeed, or -Odefault option is specified.
|
branch_chaining
[V1.10 or later]
|
on or off
|
Optimization by reducing the branch instruction code size
This option uses a branch instruction whose code size is small. To use a branch instruction whose code size is small, a branch destination may be another branch instruction which shares the same destination, not a direct branch to the final destination.
As a result, although this option reduces the code size, it also lowers the execution speed.
Note that using this optimization without specifying the -g_line option may affect the behavior of single-step execution.
If the value is omitted, it is assumed that on has been specified.
This option is valid when the -Osize or -Odefault option is specified.
|
align
[V1.10 or later]
|
on or off
|
Optimization by changing the alignment condition
The number of generated instructions is decreased, the code size is reduced and the execution speed is increased by changing the variable alignment condition and then combining multiple accesses into one when, for example, accessing contiguous areas in a structure-type variable.
As a result of changing the alignment condition, padding data is filled in and the amount of consumption may increase in the data storage area.
If value is omitted, it is assumed that on has been specified.
This option is valid when the -Osize, -Ospeed, or -Odefault option is specified.
This option is invalid if the -stuff option is specified at the same time.
|