Compile Phase Options. The default options are: 1. perform all machine dependent and independent optimizations 2. do not run the assembly language optimizer (alo563) 3. do not generate debugging information 4. locate data only in the Y data memory space. Run the assembly language optimizer on the assembly language output of -fno-opt Disable all optimizations. -fno-peephole Disable the peephole portion of optimization. -fno-strength-reduce Disable the optimizations of loop strength reduction and elimination of iteration ▇▇▇▇- ▇▇▇▇▇ as well as DSP56300 specific looping optimizations (DO instruction usage, etc.). -fno-defer-pop By default, the compiler will try to defer (delay) restoring the stack pointer upon the return of a function call. The purpose of deferring restoration of the stack pointer is to reduce code size and decrease execution time; however, the stack penetration may increase (see the DSP56300 Family Manual for information on stack overflow). Examples of function calls that will not incur deferred pops whether or not the -fno-- defer-pop option is specified are: • calls as function arguments • calls in conditional expressions • calls inside a statement expression -fforce-addr Force memory address constants to be copied into registers before doing arithmetic on them. The code generated with this option may be better or it may be worse de- pending on the source code. This option forces memory addresses into registers which, in turn, may be handled as common sub-expressions. -finline-functions Attempt to insert all simple functions in-line into their callers. The compiler heuristi- cally decides which functions are simple enough to merit this form of integration. If all calls to a given function are inserted, and the function is declared static, then the function is no longer needed as a separate function and normally is not output as a separate function in assembly code. -fcaller-saves Enable values to be allocated in registers that will be overwritten by function calls by emitting extra instructions to save and restore the registers around such calls. Such allocation is done only when it seems to result in better code than would otherwise be produced. -fkeep-inline-functions Output a separate run-time callable version of the function even if all calls to a given function are integrated and the function is declared static. -fwritable-strings Store string constants in the writable data segment without making them unique. This is for compatibility with old programs which assume they can write into string constants. Writing into string constants is poor technique; constants should be con- stant. -fcond-mismatch Allow conditional expressions with mismatched types in the second and third argu- ments. The value of such an expression is void. -fvolatile Consider all memory references through pointers to be volatile. -ffixed-REG Treat the register named REG as a fixed register; generated code should never re- fer to it (except perhaps as a stack or frame pointer). Legal values for REG are: This flag should be used sparingly as it can have devastating results on the code generated. C:\> g563c -O -ffixed-r4 file.c -o file.cld Produce COFF debugging information. A key feature afforded by the use of the GNU C compiler (g563c) teamed with the source level debugger is that the programmer is allowed to generate optimized code with debug information (select options -g -O) making it possible for the pro- grammer to debug optimized code directly. Due to the optimizations performed, it is possible that variables will not be defined (unused variable elimination), statements may not be executed (dead code elimination), and code may be executed early (code motion). This is a partial list of the oddities that may be encountered when de- bugging optimized code. However, the improved code performance due to optimi- zation normally out weighs the problems encountered. Perform machine dependent and independent optimizations. This is the default mode of the compiler. Invoking the compiler with the optimizer may cause compile times to increase and require more system memory. Invoking the compiler without the optimizer should be done only when the program- mer requires additional flexibility while debugging code. An example of such flexibil- ity includes the ability to assign new values to declared c variables. Additionally, non-optimized code takes register usage clues from the storage class specifier reg- ister, something not done with the optimizer invoked. Disabling the optimizer is done via -f options listed above. -mconserve-p-mem Generate code that consumes less program memory at the expense of run time. Rather than generating a prologue and epilogue for each function, calls are made to the prolog and epilog routines included in the library. Similarly, rather than doing in- line expansion of several operations (for instance modulus), a call to a library rou- tine is emitted. -mno-dsp-optimization Disables all Motorola optimizer enhancements. -mno-do-loop-generation Disable DO instruction usage by optimizer. -mno-biv-plus-linv-promotion Disable the promotion of address expressions to address registers within loops. This optimization transforms array base address plus induction variable expres- sions into auto-increment/decrement style memory references. -mp-mem-switchtable Forces the compiler to locate all switch tables in P memory. -mx-memory Direct the compiler to locate data in the X data memory space. Memory modes can- not be mixed, i.e. only one of -mx-memory, -my-memory or -ml-memory may be se- lected.
Appears in 3 contracts
Sources: Single User Software Tools License Agreement, Single User Software Tools License Agreement, Single User Software Tools License Agreement