MSP430 C/C++ CODE GENERATION TOOLS 17.3.0.STS Release Notes March 2017 ================================================================================ Contents ================================================================================ 1) Support Information 2) New Features 3) Notable Bug Fixes in 17.3.0.STS ------------------------------------------------------------------------------- 1. Support Information ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- 1.1) List of Fixed and Known Defects ------------------------------------------------------------------------------- As of the 16.12.0.STS release, the DefectHistory.txt file has been replaced with the two files Open_defects.html and Closed_defects.html. For open bugs, a status of Open or Accepted means that the bug has not been examined yet, whereas a status of Planned means that an evaluation or fix is in progress. ------------------------------------------------------------------------------- 1.2) Compiler Wiki ------------------------------------------------------------------------------- A Wiki has been established to assist developers in using TI Embedded Processor Software and Tools. Developers are encouraged to read and contribute to the articles. Registered users can update missing or incorrect information. There is a large section of compiler-related material. Please visit: http://processors.wiki.ti.com/index.php?title=Category:Compiler ------------------------------------------------------------------------------- 1.3) Compiler Documentation Errata ------------------------------------------------------------------------------- Errata for the "TI MSP430 Optimizing Compiler User's Guide" and the "TI MSP430 Assembly Language User's Guide" is available online at the Texas Instruments Embedded Processors CG Wiki: http://processors.wiki.ti.com/index.php?title=Category:Compiler under the 'Compiler Documentation Errata' link. ------------------------------------------------------------------------------- 1.4) TI E2E Community ------------------------------------------------------------------------------- Questions concerning TI Code Generation Tools can be posted to the TI E2E Community forums. The "Development Tools" forum can be found at: http://e2e.ti.com/support/development_tools/f/default.aspx ------------------------------------------------------------------------------- 1.5) Defect Tracking Database ------------------------------------------------------------------------------- Compiler defect reports can be tracked at the Development Tools bug database, SDOWP. The log in page for SDOWP, as well as a link to create an account with the defect tracking database is found at: https://cqweb.ext.ti.com/pages/SDO-Web.html A my.ti.com account is required to access this page. To find an issue in SDOWP, enter your bug id in the "Find Record ID" box once logged in. To find tables of all compiler issues click the queries under the folder: "Public Queries" -> "Development Tools" -> "TI C-C++ Compiler" With your SDOWP account you can save your own queries in your "Personal Queries" folder. ------------------------------------------------------------------------------- 1.6) Short Term Support release ------------------------------------------------------------------------------- The MSP430 CGT v17.3.0.STS release is a short term support (STS) release. This release will be supported only until the next STS or LTS release. ------------------------------------------------------------------------------- 2. New Features ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- 2.1) New function attribute to specify calling convention and new ROM calling convention ------------------------------------------------------------------------------- The call_conv attribute can be used to specify the calling convention for function calls. This is intended for allowing IAR and TI compilers to link against the same ROM image if it was generated using the new cc_rom calling convention. Currently the implementation only supports linking against ROM images built with IAR’s compiler using their ROM calling convention implementation. The TI Compiler currently does not support generating cc_rom ROM images. The new attribute can be applied to functions, function pointers, and function typedefs. The attribute is applied to a function with GCC attribute syntax, as follows: __attribute__((call_conv("cc_rom"))) The attribute accepts "cc_rom" or "cc_norm" (the default calling convention). Some examples: #define __cc_rom __attribute__((call_conv("cc_rom"))) __cc_rom void rom_func(void) { ... } typedef __cc_rom void (rom_func_t)(void); int main() { rom_func(); rom_func_t *fp = (rom_func_t*)0x1234; fp(); ((void (__cc_rom *)(void))0x2468)(); void (__cc_rom *rom_func_ptr)(void); rom_func_ptr = &rom_func; rom_func_ptr(); } See the MSP430 Optimizing C/C++ COmpiler User's Guide or below article for more details: http://processors.wiki.ti.com/index.php/call_conv_attribute ------------------------------------------------------------------------------- 2.2) Improved stack usage with inline functions ------------------------------------------------------------------------------- The new compiler improves stack usage by sharing aggregate data originally defined in inline functions. Example: struct ARGS { int f1,f2,f3,f4,f5; }; static inline void func1() { struct ARGS a = {1, 2, 3, 4, 5}; foo(&a); } static inline void func2() { struct ARGS b = {1, 2, 3, 4, 5}; foo(&b); } void func3() { func1(); func2(); } In previous compilers, if func1 and func2 are inlined, the structs a and b would not share the same stack location. This version of the compiler will now share stack memory for local aggregates defined in inline functions. ------------------------------------------------------------------------------- 3. Notable Bug Fixes in 17.3.0.STS ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- 3.1) IAR Compatibility: __cc_rom calling convention ------------------------------------------------------------------------------- Fixed an issue where using the __cc_rom calling convention with parameters of pointer type could result in code that passed the pointer in the wrong register. For example: typedef struct { uint8_t a; uint_8 b; } str_t; extern __cc_rom void func(uint16_t, str_t *); str_t my_str = {0, 0}; func(0, &my_str); The address of 'my_str' would be passed in R14 erroneously, instead of R13.