MSP430-GCC 8.2.0.52 Known Issues

Listed below are the known issues in this version of the MSP430-GCC toolchain. Their current status can be tracked in Texas Instruments' Development Tools bug database - called SDOWP. Just enter the bug ID (e.g. "MSPGCC-156") in the search box.
Read-only access to SDOWP is available at the below URL:

https://cqweb.ext.ti.com/cqweb/main?command=GenerateMainFrame&service=CQ&schema=SDO-Web&contextid=SDOWP&username=readonly&password=readonly

Open Issues

Bug IDTitleSummaryTarget ReleaseWorkaround
MSPGCC-39 Excessive register push/pop in ISR In an interrupt function that calls another function, the compiler generates code to save and restore all general purpose registers. Only the callee-saved regs R4-R10 that are actually used by the called function are required to be saved by the interrupt function. 8.3.0 N/A
MSPGCC-156 Inclusion of runtime support library functions is not dynamic with LTO Runtime support library functions (CRT), to perform tasks such as initializing data/bss, or executing global constructors, are not all required in every application.
The assembler and linker work together to only include the CRT functions needed. This dynamic behaviour is not yet supported when LTO is enabled (with the -flto flag), so all CRT functions must be included in the final program, in case they are needed.
8.3.0 There should be no functional issue with the current behaviour, however code size may be negatively affected as all runtime support functionality must be enabled. Disabling LTO by removing the -flto flag may therefore reduce code size, as only the required CRT functions will be linked into the final program.
MSPGCC-175 Identical interrupt functions are erroneously folded at -O2 and above When two different functions contain the same code, GCC can attempt to optimize one of the functions by removing the content of the function and inserting a call to the other, identical function.
Interrupt functions have different calling conventions to regular functions, which this optimization does not take into account. This can result in corruption of the stack, leading to undefined program behaviour.
8.3.0 Pass -fno-ipa-icf-functions to msp430-elf-gcc to disable the "identical code folding" optimization for functions.
MSPGCC-176 devices.csv not found when path to support files is passed with -Wl,-L msp430-elf-gcc searches the paths passed to the -I and -L options for the devices.csv file, which contains data about MSP430 devices. For newer devices whose ISA or hardware multiply support is not hard-coded into the toolchain, this file is required for proper operation of the -mmcu option.
When the linker library path is passed directly to the linker with -Wl,-L, and there are no other -I or -L options containing the path to devices.csv on the command line, the -Wl,-L path is not searched, and devices.csv is not found.
8.3.0 Omit -Wl when using the -L option. Linker library paths can be specified with -L and do not need to be passed directly to the linker.
MSPGCC-177 Packet error in GDB when loading large programs on some devices It may take several seconds to load large programs onto some devices using GDB and the GDB agent.
If the default timeout of 2 seconds for the GDB agent to respond to GDB is exceeded, then a packet error can occur and subsequent GDB commands may fail.
8.3.0 Increase the "remotetimeout" value in GDB e.g.
set remotetimeout 10