C2000 C/C++ CODE GENERATION TOOLS Release Notes 15.9.0.STS September 2015 ******************************************************************************* Table of Contents ******************************************************************************* 1. Short Term Support Release 2. New CLA Compiler Features 2.1 Removal of CLA Language Restrictions 2.2 Same Default Language Options as C2000 2.3 --cla_default Option 3. RAM Function Support 4. New C2000 Intrinsics __eallow, __edis 5. Module summary in linker map file * Features Included from v15.3.0.STS: 6. C99 Math RTS Library Support ============================================================================== 1. Short Term Support Release ============================================================================== The C2000 CGT v15.6.0.STS is a short term support (STS) release. This release will no longer be supported when the next release is available. Therefore, customers that require locking onto a compiler version for production projects should not use this version for production. Short Term Support releases are fully validated and allow us to provide new features on a more frequent basis. The release stream will be terminated with a Long Term Support (LTS) release. ============================================================================== 2. New CLA Compiler Features ============================================================================== The 15.6.0.STS version of the C2000 compiler continues to improve support and ease of use for CLA code generation. ============================================================================== 2.1 Removal of CLA Language Restrictions ============================================================================== Integer divide, modulus and unsigned integer compares are now permitted in CLA code. If the compiler can't eliminate or transform these non-native operations through optimization, performance advice will be issued indicating that the operations might lead to poor performance. ============================================================================== 2.2 Same Default Language Options as C2000 ============================================================================== The compiler will now support the same default language options for CLA as for C2000, such as being in GCC mode by default. ============================================================================== 2.3 --cla_default Option ============================================================================== The --cla_default option can be used to treat .c files as CLA files. ============================================================================== 3. RAM Function Support ============================================================================== The ramfunc attribute can be used to specify that a function will be placed in and executed out of RAM. This allows the compiler to optimize functions for RAM execution, as well as to automatically copy functions to RAM on flash-based devices. The attribute is applied to a function with GCC attribute syntax, as follows: __attribute__((ramfunc)) void f(void) { ... } The --ramfunc=on option can be used to indicate that the attribute should be applied to all functions in a translations unit, eliminating the need for source code modification. The --no_fast_branch/-me option is deprecated and no longer has any effect. Fast branch instructions will be generated for ramfunc functions. Regular branch instructions will be generated for all other functions. For projects or files previously compiled without the --no_fast_branch option, use the --ramfunc=on option instead to generate fast branch instructions for all functions. For more information, see: http://processors.wiki.ti.com/index.php/Placing_functions_in_RAM ============================================================================== 4. New C2000 Intrinsics __eallow, __edis ============================================================================== The following intrinsics are now supported for C2000: void __eallow(void); // generates EALLOW instruction void __edis(void); // generates EDIS instruction ============================================================================== 5. Module summary in linker map file ============================================================================== The linker map file now contains a module summary view. This view organizes the object files by directory or library and displays the code, read-write, and read-only size that the file contributed to the resulting executable. Sample output: MODULE SUMMARY Module code ro data rw data ------ ---- ------- ------- .\Application\ file1.obj 1146 0 920 file2.obj 316 0 0 +--+--------------------------+-------+---------+---------+ Total: 1462 0 920 mylib.lib libfile1.obj 500 0 0 libfile2.obj 156 4 0 libfile3.obj 122 0 20 +--+--------------------------+-------+---------+---------+ Total: 778 4 20 Heap: 0 0 0 Stack: 0 0 1024 Linker Generated: 424 200 0 +--+--------------------------+-------+---------+---------+ Grand Total: 2664 204 1964 ============================================================================== 6. C99 Math RTS Library Support ============================================================================== The RTS Math Library has been changed. C99 math support is now available, including long double (64-bit) and float versions of floating point math routines. See the following link for a list of C99 math routines: http://en.wikibooks.org/wiki/C_Programming/C_Reference/math.h#C99_functions