Readme for C2000 Code Generation Tools v22.6.1.LTS

Table of Contents

LTS Release

The C2000 CGT v22.6.x.LTS release is an LTS release.


Compiler Downloads and Documentation

Documentation for the “TI C2000 Optimizing Compiler User’s Guide” and the “TI C2000 Assembly Language User’s Guide” is available online at:

TI E2E Community

Questions concerning TI Code Generation Tools can be posted to the TI E2E Community forums at:

The following is the top-level webpage for all of TI’s Code Generation Tools.

If submitting a defect report, please attach a scaled-down test case with command-line options and the compiler version number to allow us to reproduce the issue easily.

Defect Tracking Database

Compiler defect reports can be tracked at the Development Tools bug database at:

New Features:

New option --fp_single_precision_constant treats unsuffixed floating point constants as 32-bit

New option --fp_single_precision_constant treats unsuffixed floating-point constants as single precision instead of implicitly converting them to double-precision constants.

Interrupt save/restore efficiency improvement

The C2000 compiler now only saves/restores any registers that were used in an interrupt service routine (ISR). Additionally, if an ISR makes function calls, then all save-on-call (SoC) registers will get saved/restored. For FPU compilations, the RB register is saved/restored for all low priority ISRs, however, for high priority ISRs, the RB register is only saved/restored if the ISR may use an RPTB instruction.

The compiler user guide states:
“If a C/C++ interrupt routine does not call any other functions, only those registers that the interrupt handler uses are saved and restored”
However, prior to this update, above has not been the case since at least release 6.4 and the actual behavior has been to save/restore all SoC registers as long as any single SoC register was used.

Performance improvements CLA

Performance improvements C28

Hex tool: new options --boot_align_sect and --boot_block_size=size

Resolved defects

Resolved defects in v22.6.1.LTS:

ID Summary
CODEGEN-11541 LFU does not work with –opt_level=4 link time optimization
CODEGEN-11329 LFU build with multiple object files with the same global-static variable name that are lfu-preserved may generate linker errors
CODEGEN-11328 ELF symbol table entry for uninitialized static variable incorrectly shows size of 0
CODEGEN-11255 Incomplete support for linker option –unused_section_elimination
CODEGEN-11240 align of C28 CRC/COPY/CINIT tables is 64bits (updated to 32bits)
CODEGEN-11223 Compiler fails with TP>> internal error: Bad kind: TYPE::type_pointed_to
CODEGEN-11218 lfu should not combine .TI.bound output sections if the combined section would span memory range boundaries
CODEGEN-11206 Use of offsetof causes Optimizer to terminate abnormally
CODEGEN-11171 C2000: Compiler manual mistakenly states global and static variables go in the .econst section
CODEGEN-11025 LFU: const variables should not default preserve and instead should require attribute
CODEGEN-10993 Inconsistent definition of ATTRIBUTE macro for non-LLVM toolchains
CODEGEN-10951 Linker needlessly issues error #10471-D: Ignoring empty output section “.cinit” in memory range FLASH_BANK0_SEC1; objects in CRC range must be non-empty
CODEGEN-10915 CLA float pt ternary expressions returning negation may generate invalid results at –opt_level=2 or higher
CODEGEN-10849 CLA compile fails with: INTERNAL ERROR: no match for VFIELD
CODEGEN-10848 Compiler places dynamically initialized const variables for instance of a class in the .const section instead of .data:variable_name
CODEGEN-10729 Linker help summary should not mention -h
CODEGEN-10691 assembler/linker incorrectly handles REL relocations if user specifies a CODE_SECTION that starts with ‘a’
CODEGEN-10588 C28 linker diagnostic 16041 typo for file compat check
CODEGEN-10525 Compiler fails with INTERNAL ERROR: Decomposition error
CODEGEN-10285 bitfield assign incorrectly shifting before extending for
CODEGEN-10116 C2000 long-long compares using MINL/MINCUL used invalid indirect-postinc addressing mode
CODEGEN-10101 Option –fp_single_precision_constant errors on unsuffixed double precision float constants that are out of range of single precision float
CODEGEN-10058 Compiler fails to handle bare \r as a line separator
CODEGEN-9046 C2000 compiler manual does not explain the layout of bit fields which are larger than 16-bits
CODEGEN-8578 Contact support message needs updating for E2E changes

Known defects (dynamic)

The following link will lead to an updated list of known defects in this release:

Known defects – dynamic ***