SPRU514Z July 2001 – October 2023 SM320F28335-EP
The following table lists changes made to this document prior to changes to the document numbering format. The left column identifies the first version of this document in which that particular change appeared.
Version Added | Chapter | Location | Additions / Modifications / Deletions |
---|---|---|---|
SPRU514T | Using the Compiler | Section 2.3.4 | Inlined memcpy calls now support >255 words through the use of RPT with a register operand. This allows inlining of memcpy of up to 65535 words. However, the maximum value specified with --rpt_threshold is still 256. |
SPRU514T | Using the
Compiler, Run-Time Environment |
Section 2.3.4 and Section 7.6 | Clarified that TMU1 support is available for EABI only. |
SPRU514T | Using the
Compiler, CLA Compiler |
Section 2.3, Section 10.1.1, and Section 10.2.2 | Added the --cla_signed_compare_workaround option for the CLA compiler. Added comparison intrinsics for the CLA compiler. |
SPRU514T | Linking | Section 4.3.5 | Clarified that either --rom_model or --ram_model is required if only the linker is being run, but --rom_model is the default if the compiler runs on C/C++ files on the same command line. |
SPRU514T | C/C++ Language | Section 6.9.21 | The
#pragma once is now documented for use
in header files. |
SPRU514T | C/C++ Language | Section 6.15.4, Section 10.2.1, and Section 10.2.4 | The linker now provides diagnostics about certain problems with blocking access and interactions between CLA and C28 code. |
SPRU514T | Run-Time Environment | Section 7.6.3 | Corrected assembly instruction equivalents for __atan, __cos, and __sin TMU intrinsics. |
SPRU514T | Run-Time Environment | Section 7.6.4 | Clarified that fast integer division requires EABI and FPU32 or FPU64. The types returned by fast integer division intrinsics that divide a 64-bit value by a 32-bit value have changed. In addition, the assembly performed by these intrinsics has been optimized. |
SPRU514T | Run-Time Environment | Section 7.10.4.1 | Clarified that zero initialization takes place only if the --rom_model linker option is used, not if the --ram_model option is used. |
SPRU514S | -- throughout -- | The default file extensions for object files created by the compiler have been changed in order to prevent conflicts when C and C++ files have the same names. Object files generated from C source files have the .c.obj extension. Object files generated from C++ source files have the .cpp.obj extension. | |
SPRU514S | Using the
Compiler, Optimization |
Section 2.3 and Section 3.14 | The --isr_save_vcu_regs compiler option has been added. |
SPRU514S | CLA Compiler | Section 10.2.1 and Section 10.2.4 | Added information about declaring variables shared by CLA and C28x code and about function calls between C28x and CLA code. |
SPRU514R.1 | Using the
Compiler, Run-Time Environment |
Section 2.3.4, Section 7.6.4, and Section 7.8.2 | Added information about fast integer division in regard to the built-in integer division and modulo operators ("/" and "%") and intrinsics. |
SPRU514R.1 | Run-Time Environment | Section 7.1.7 | Clarify bit-field alignment rules. |
SPRU514R.1 | Run-Time Environment | Section 7.6.2 | Added intrinsics specific to FPU64 and information about COFF vs. EABI use of FPU64. |
SPRU514R.1 | CLA Compiler | Section 10.2 | Clarified recommendation for int type usage. |
SPRU514R | -- throughout -- | Added further documentation of EABI support. This includes identifying features that are supported only for COFF or EABI. Identified examples as COFF-specific where necessary. | |
SPRU514R | Using the Compiler | Section 2.3 | Added command-line options for EABI, including --cinit_compression, --copy_compression, --extern_c_can_throw, --retain, --unused_section_elimination, and --zero_init. |
SPRU514R | Using the Compiler | Section 2.3.1 | Added the --emit_references:file linker option. |
SPRU514R | Using the Compiler | Section 2.3.4 | Added the --silicon_errata_fpu1_workaround option. |
SPRU514R | Using the Compiler | Section 2.5.1 | Documented that C standard macros such as __STDC_VERSION__ are supported. |
SPRU514R | Using the Compiler | Section 2.11.1 | Added information about situations where intrinsics may not be inlined. |
SPRU514R | Using the
Compiler, C/C++ Language |
Section 2.13, Section 6.11 | Added information about supported Application Binary Interfaces (ABIs). |
SPRU514R | Linking C/C++
Code, Run-Time Environment |
Section 4.3.6, Section 7.1.1 | Added EABI-specific sections such as .bss, .const, .sysmem, and .init_array. Also added .args, .ppdata, and .ppinfo sections. |
SPRU514R | C/C++ Language | Section 6.3 | Added EABI-specific information about double and wchar_t data types. |
SPRU514R | C/C++ Language | Section 6.9 | Added the LOCATION, NOINIT, PERSISTENT, and WEAK pragmas. |
SPRU514R | C/C++ Language | Section 6.12 | Added EABI-specific information about namespaces. |
SPRU514R | C/C++ Language | Section 6.14.1 | Updated list of C99 non-supported run-time functions. |
SPRU514R | C/C++ Language | Section 6.15.2 | Added documentation for the aligned, calls, naked, and weak function attributes. |
SPRU514R | C/C++ Language | Section 6.15.4 | Added documentation for the location, noinit, persistent, and weak variable attributes. |
SPRU514R | Run-Time Environment | Section 7.2.1 | Added FPU64 registers. |
SPRU514R | Run-Time Environment | Section 7.6 | Corrected descriptions of values returned by TMU intrinsics such as __sin() and __cos(). |
SPRU514R | Run-Time Environment | Section 7.10.4 | Added information about automatic initialization of variables for EABI. |
SPRU514R | Run-Time Support Functions | Section 8.1.8 | Added EABI-specific run-time library naming conventions. |
SPRU514R | Run-Time Support Functions | DEV_lseek topic | Corrected syntax documented for DEV_lseek function. |
SPRU514Q | Introduction, Using the Compiler, C/C++ Language |
Section 1.3, Section 2.3, Section 6.1, and Section 6.14.2 | Added support for C11. |
SPRU514Q | Using the Compiler | Section 2.3.4 | Added support for EABI. The COFF ABI is the default. |
SPRU514Q | Using the Compiler | Section 2.3.1 | Added the --ecc=on linker option, which enables ECC generation. Note that ECC generation is now off by default. |
SPRU514Q | Using the Compiler | Section 2.3.4 and Section 7.6 | Added 64-bit FPU support via --float_support=fpu64. |
SPRU514Q | Using the
Compiler, Run-Time Environment |
Section 2.3.4 and Section 7.6 | Added support for fast integer division via --idiv_support. |
SPRU514Q | Using the
Compiler, C/C++ Language |
Section 2.3.4 and Section 7.6 | Added further TMU support via --tmu_support=tmu1. |
SPRU514Q | Using the Compiler | Section 2.3.4 | Added Cyclic Redundancy Check support via --vcu_support=vcrc. |
SPRU514Q | Using the Compiler | Section 2.5.1 | The __TI_STRICT_ANSI_MODE__ and __TI_STRICT_FP_MODE__ macros are defined as 0 if their conditions are false. |
SPRU514Q | Using the
Compiler, C/C++ Language |
Section 2.11 and Section 6.9 | Revised the section on inline function expansion and its subsections to include new pragmas and changes to the compilers decision-making about what functions to inline. The FORCEINLINE, FORCEINLINE_RECURSIVE, and NOINLINE pragmas have been added. |
SPRU514Q | Optimization, C/C++ Language |
Section 3.11 and Section 6.15.4 | Added blocked and noblocked attributes for better Data Page (DP) pointer load optimization. The --disable_dp_load_opt option is no longer recommended. |
SPRU514Q | C/C++ Language | Section 6.2 | Removed several C++ features from the exception list because they have been supported for several releases. |
SPRU514Q | C/C++ Language | Section 6.3.3 and Section 7.6 | Added a recommendation that 32-bit floating point values be declared as float, not as double. (Both are currently 32 bits.) Modified intrinsic syntax descriptions to use "float" for 32-bit values. |
SPRU514Q | C/C++ Language | Section 6.4 | Added information about character sets and file encoding. |
SPRU514Q | C/C++ Language | Section 6.15.2 and Section 6.15.4 | Added "retain" as a function attribute and variable attribute. |
SPRU514Q | C/C++ Language | Section 6.15.6 | Clarified the availability of the __builtin_sqrt() and __builtin_sqrtf() functions. |
SPRU514Q | CLA Compiler | Section 10.2 | Corrected the syntax for the __mswapf intrinsic. |
SPRU514P | C/C++ Language | Section 6.15 | The compiler now supports several Clang __has_ macro extensions. |
SPRU514P | C/C++ Language | Section 6.15.1 | The wrapper header file GCC extension (#include_next) is now supported. |
SPRU514O | C/C++ Language | Section 6.5.1 | Clarified exceptions to const data storage set by the const keyword. |
SPRU514N | Optimization | Section 3.7.1.4 | Corrected error in command to process the profile data. |
SPRU514M | Using the
Compiler C/C++ Language, and CLA Compiler |
Section 2.3, Section 2.3.4, Section 2.5.1, Section 6.9.15, and Section 10.2 | Documented support for CLA version 2 and CLA v2 background tasks. |
SPRU514M | Using the
Compiler, C/C++ Language |
Section 2.3.3 | Revised to state that --check_misra option is required even if the CHECK_MISRA pragma is used. |
SPRU514M | Using the Compiler | Section 2.3.5 | Removed the --symdebug:coff option, which is no longer supported. |
SPRU514M | Using the Compiler | Section 2.10 | Corrected the document to describe the ---gen_preprocessor_listing option. The name --gen_parser_listing was incorrect. |
SPRU514M | Optimization | Section 3.11 | Provided information about data page blocking. |
SPRU514L | Optimization | Section 3.7.3 | Corrected function names for _TI_start_pprof_collection() and _TI_stop_pprof_collection(). |
SPRU514L | CLA Compiler | Section 10.2 | Provided additional information and an example for the __msetflg intrinsic. |
SPRU514K | Using the Compiler | -- | Several compiler options have been deprecated, removed, or renamed. The compiler continues to accept some of the deprecated options, but they are not recommended for use. |
SPRU514J | Using the Compiler | Section 2.3 and Section 4.2.2 | The --gen_data_subsections option has been added. |
SPRU514J | Using the Compiler | Section 2.3.5 | The --symdebug:dwarf_version compiler option has been added. This option sets the DWARF debugging format version used. |
SPRU514J | Optimization | Section 3.7 and Section 3.8 | Feedback directed optimization is described. This technique can be used for code coverage analysis. |
SPRU514J | C/C++ Language | Section 6.9.1 | A CALLS pragma has been added to specify a set of functions that can be called indirectly from a specified calling function. Using this pragma allows such indirect calls to be included in the calculation of a functions' inclusive stack size. |
SPRU514J | C/C++ Language | Section 6.15.7 | A byte_peripheral type attribute and an intrinsic have been added to access byte peripheral data. |
SPRU514J | Run-Time Environment | Section 7.6 | Intrinsics have been added to perform unsigned integer division. The new intrinsics are __euclidean_div_i32byu32(), __rpt_subcul(), and __subcul(). |
SPRU514J | Run-Time Environment | Section 7.10.1 | Additional boot hook functions are available. These can be customized for use during system initialization. |
SPRU514I | Using the Compiler | Table 2-7 | The --cla_default option has been added. This option causes files with an extension of .c to be processed as CLA files. |
SPRU514I | Using the Compiler | Section 2.3.4 | The --ramfunc option has been added. If set, this option places all functions in RAM. |
SPRU514I | Using the Compiler | -- | The --no_fast_branch option has been deprecated. |
SPRU514I | C/C++ Language | Section 6.14.1 | C99 math support is now available, including float and long double versions of floating point math functions. |
SPRU514I | C/C++ Language | Section 6.15.2 | The ramfunc function attribute has been added. It specifies that a function should be placed in RAM. |
SPRU514I | Run-Time Environment | Section 7.3.2 | Added XAR6 to the list of registers and corrected the location in which the address of the returned structure is placed. |
SPRU514I | Run-Time Environment | Section 7.6 | Added the __eallow and __edis intrinsics. |
SPRU514I | CLA Compiler | Section 10.2.4 | Most GCC extensions are now supported by the CLA compiler. |
SPRU514H | Introduction | Section 1.3 | Added support for C99 and C++03. |
SPRU514H | Using the Compiler | Table 2-7 | Added support for C99 and C++03. The -gcc option has been deprecated. The --relaxed_ansi option is now the default. |
SPRU514H | Using the Compiler | Section 2.3.3 | Added the --advice:performance option. |
SPRU514H | Using the Compiler | Section 2.3.4 | The --silicon_version=27 option is no longer supported. |
SPRU514G | Using the Compiler | Section 2.3.4 | Added --tmu_support=tmu0 option. This option also affects the behavior of the --float_support and --fp_mode=relaxed options. |
SPRU514G | Using the Compiler | Section 2.3.4 | Added support for Type 1 CLA via --cla_support=cla1. |
SPRU514G | Using the Compiler | Section 2.3.4 | Added support for Type 2 VCU via --vcu_support=vcu2. |
SPRU514H | Using the Compiler | Section 2.3.11 | Added information about the --flash_prefetch_warn option. |
SPRU514H | Using the Compiler | Section 2.5.1 | Added several predefined macro names that were not documented. |
SPRU514H | Using the Compiler | Section 2.5.3 | Documented that the #warning and #warn preprocessor directives are supported. |
SPRU514H | Using the Compiler | Section 2.6 | Added section on techniques for passing arguments to main(). |
SPRU514H | Using the Compiler | Section 2.11 | Documented that the inline keyword is now enabled in all modes except C89 strict ANSI mode. |
SPRU514H | C/C++ Language | Section 6.3 | The size of pointer types on C28x is now 32 bits instead of 22 bits. The near and far keywords are deprecated. The small memory model is no longer supported; the only memory model uses 32-bit pointers. The .bss, .const, and .sysmem sections are no longer used; the .ebss, .econst, and .esysmem sections are used instead. (Symbol addresses are assumed to be less than 22 bits for performance reasons.) |
SPRU514H | C/C++ Language | Section 6.1.1 | Added section documenting implementation-defined behavior. |
SPRU514H | C/C++ Language | Section 6.3.1 | Added documentation on the size of enum types. |
SPRU514H | C/C++ Language | Section 6.9.15, Section 6.9.22, and Section 6.15.2 | Added C++ syntax for the INTERRUPT and RETAIN pragmas. Also removed unnecessary semicolons from #pragma syntax specifications. Also the GCC interrupt and alias function attributes are now supported. |
SPRU514H | C/C++ Language | Section 6.9.11 and Section 6.9.12 | Added the FUNC_ALWAYS_INLINE and FUNC_CANNOT_INLINE pragmas. |
SPRU514H | C/C++ Language | Section 6.9.7 | Added the diag_push and diag_pop diagnostic message pragmas. |
SPRU514H | C/C++ Language | Section 6.14, Section 6.14.1, and Section 6.14.3 | Added support for C99 and C++03. The --relaxed_ansi option is now the default and --strict_ansi is the other option; "normal mode" for standards violation strictness is no longer available. |
SPRU514H | Run-Time Environment | Section 7.4 | Added reference to section on accessing linker symbols in C and C++ in the Assembly Language Tools User's Guide. |
SPRU514G | Run-Time Environment | Table 7-6 and Table 7-8 | Added intrinsics for TMU instructions and for reading from and writing to memory using 32-bit addresses for data placed higher than the usual 22-bit address range. |
SPRU514H | Run-Time Support Functions | Section 8.1.3 | RTS source code is no longer provided in a rtssrc.zip file. Instead, it is located in separate files in the lib/src subdirectory of the compiler installation. |
SPRU514H | C++ Name Demangler | Section 9.1 | Corrected information about name demangler options. |
SPRU514H | CLA Compiler | Section 10.1 | Non-recursive function calls and more than two function parameters are now supported for CLA code. CLA scratchpad management has been simplified; it is no longer necessary to specify a size for the scratchpad in the linker command file. The compiler now supports both the interrupt attribute and the INTERRUPT pragma for CLA interrupts. |