MSP430 C/C++ Code Generation Tools v18.12.8.LTS Release Notes
Table of Contents
1 Support Information
1.1 List of Resolved and Known Defects
Resolved defects
ID | Summary |
---|---|
CODEGEN-8736 | Incorrect computation of condition test involving bool value |
CODEGEN-8640 | Incrementing a volatile bit-field leads to corrupted code |
CODEGEN-8589 | Compiler intermittently crashes on switch with 20k cases |
CODEGEN-8538 | Compiler does not honor attribute aligned when applied to function |
CODEGEN-8485 | sscanf float conversion should fail and return 0 when input string starts with E or e |
CODEGEN-8389 | Including cmath causes remark: zero used for undefined preprocessing identifier “STDC_VERSION” |
CODEGEN-8154 | The <strings.h> functions aren't declared extern “C” |
CODEGEN-8100 | Compiler does not account for wraparound when different increment type added to signed int |
CODEGEN-7956 | Compiler incorrectly elides short-circuit behavior of && when right operand might invoke undefined behavior |
CODEGEN-7778 | Remove –asm_includes as CCS option |
CODEGEN-5735 | Spurious warning when attribute((noinline)) applied to inline definition of member function |
Open defects
ID | Summary |
---|---|
CODEGEN-6509 | Compiler error: no instance of function template matches the argument list |
CODEGEN-6070 | Erroneous “redeclared with incompatible type” involving two tagless structs with same form |
CODEGEN-4329 | Initializing unordered_map with an initializer_list fails with -o2 or higher |
CODEGEN-4323 | 1 ULP rounding error in double addition |
CODEGEN-4318 | libcxx/include/random uses unsigned for unsigned long |
CODEGEN-4305 | Compiler aborts with excessive inlining of C++ functions |
CODEGEN-4297 | Cannot take the address of std::ctype<char>::table_size |
CODEGEN-4281 | Unexpected type returned by bitset [] operator |
CODEGEN-4276 | std::multimap::clear is not noexcept |
CODEGEN-4275 | std::num_get does not parse floating-point strings correctly |
CODEGEN-4259 | noexcept(typeid(d)) runtime fail on polymorphic class type |
CODEGEN-4258 | deeply nested lambda functions hang the codegen |
CODEGEN-4248 | armcl allows non-default arguments to be specified after default arguments |
CODEGEN-4247 | Internal error when assigning default arguments to a parameter pack |
CODEGEN-4245 | Multiple non-variables may be declared using auto or decltype(auto) |
CODEGEN-4234 | No error generated for lambda-expression in default argument cannot capture any entity. |
CODEGEN-4158 | TI compiler does not emit clang error: constexpr function never produces a constant expression |
CODEGEN-4157 | error with using constexpr for return from end() with empty std::initializer_list |
CODEGEN-4132 | cannot find matching “==” operator definition |
CODEGEN-4124 | Failure to defer access control checks |
CODEGEN-4122 | decltype cannot be used as a destructor name |
CODEGEN-4119 | user-supplied allocator function is not called |
CODEGEN-4099 | Composing operations for valarray may fail to compile |
CODEGEN-4090 | Unimplemented core issue 475: std::uncaught_exception is not true when constructing the thrown object |
CODEGEN-4087 | wostringstream::fill(WCHAR_MAX) incorrectly sets the fill value to ' 'L. |
CODEGEN-4076 | Exception propagating out of noexcept function does not call std::terminate |
CODEGEN-4072 | Unimplemented core issue 1769: Catching a thrown derived class by reference to base clas |
CODEGEN-4071 | <regex> never throws error_ctype |
CODEGEN-4069 | std::linear_congruential_engine doesn't support 8-bit results |
CODEGEN-4044 | libcxx istreambuf_iterator points to end of string instead of character past match |
CODEGEN-4035 | Compiler allows constant subtraction between pointers to different objects |
CODEGEN-4026 | Non-standard partial ordering of variadic template partial specialization |
CODEGEN-4002 | Undefined behavior on lambda capturing constexpr by reference |
CODEGEN-4001 | Unimplemented core issue 588: Unqualified name lookup examines dependent base class |
CODEGEN-4000 | Core 1601: Overload resolution for enum with fixed type |
CODEGEN-3999 | Unimplemented core issue 1374: Conversion sequence ranks qualification before reference binding |
CODEGEN-3998 | Unimplemented core issue 1951: cv-qualified void and scalar types are not literal types |
CODEGEN-3993 | Constant initialiation may take place before dynamic initialization |
CODEGEN-3966 | slice_array assignment failures |
CODEGEN-3965 | Invalid conversion on static_cast from T1 to rvalue reference of T2 |
CODEGEN-3964 | Unimplemented core issue 1467: Overloads and initializations with single-element initializer_list |
CODEGEN-3963 | Unimplemented core issue 591: Name lookup in dependent base class that is also the current instantiation |
CODEGEN-3962 | Core Issue 1804 unimplemented: friend declaration does not apply to class template specializations |
CODEGEN-3961 | Pack expansion in template parameter list fails |
CODEGEN-3951 | Spurious error on bypassing initialization of trivially constructible objects |
CODEGEN-3948 | Spurious syntax error on alignas in alias declaration |
CODEGEN-3947 | Spurious error on unevaluated use of undefined constexpr function |
CODEGEN-3946 | Spurious error on global qualifier of struct template |
CODEGEN-1476 | Incorrect value assigned to a forward reference of a symbol defined in terms of the section's PC ($) after jump expansion |
CODEGEN-1295 | MSP430 RTS rint() double routines failing for some inputs |
CODEGEN-1138 | Print a more friendly message when using a lnk.cmd with too large memory |
CODEGEN-733 | msp C++ cpp compiled with printf_support=minimal causes cout to output incorrect results |
CODEGEN-633 | Floating point addition rounding error |
CODEGEN-582 | MSP430 RTS float arithmetic functions do not round correctly |
CODEGEN-580 | C2000 RTS float arithmetic functions do not round correctly |
CODEGEN-501 | Compiler emits bogus DW_OP_reg16 for split argument |
CODEGEN-322 | Structure is not initialized correctly when using -o2 or -o3 optimization |
CODEGEN-274 | Relocation overflows for BIT instruction using 20-bit pointer |
CODEGEN-270 | Should forbid non-const objects larger than 64k in large model if –near_data=globals |
CODEGEN-104 | Linker gives misleading warning when dot expressions used in SECTION directive for .stack section |
CODEGEN-63 | DWARF does not correctly represent variables stored in register pairs |
CODEGEN-62 | pow(2,x) has fairly significant rounding error |
CODEGEN-60 | printf gives wrong value for pointer when its value is incremented |
CODEGEN-56 | Forward reference in .space generates an internal error |
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:
https://processors.wiki.ti.com/index.php?title=Category:Compiler
1.3 Compiler Documentation
The “TI MSP430 Optimizing Compiler User’s Guide” and the “TI MSP430 Assembly Language User’s Guide” can be downloaded from:
https://www.ti.com/tool/MSP-CGT
1.4 TI E2E Community
Questions concerning TI Code Generation Tools can be posted to the TI E2E Community forums. The Code Composer Studio support forum can be found at:
http://e2e.ti.com/support/tools/ccs/f/81
1.5 Defect Tracking Database
Issues filed against the TI compilers can be searched in the Code Generation Tools Defect Database.
1.6 Long Term Support release
The MSP430 CGT v18.12.X.LTS release is a long term support (LTS) release. This release will be supported for roughly 2 years with periodic bug fix updates.
2 Linker generated ECC option
In previous versions, linker generated ECC has been enabled via an ECC specifier on memory ranges in the linker command file. This makes it difficult for TI to provide linker command files with ECC specified because users need the ability to enable/disable the support. Starting with this version, users can enable/disable ecc support via the –ecc=[on|off] linker option. Existing users of ECC will need to specify –ecc=on
3 2011 version of the C language (C11)
The compiler supports the 2011 version of the C language. Compiling with the –c11 option causes the compiler to conform to the ISO/IEC 9899:2011 C standard. The compiler supports some features of C11 in the default relaxed ANSI mode.
C11 Atomic operations are supported in default relaxed ANSI mode and in C11 mode. An atomic operation is implemented by disabling interrupts across the operation.
C11 threads.h is not supported.
4 MISRA-C 2004 Support Deprecation
Starting with MSP430 CGT v18.12.8.LTS, MISRA-C 2004 checking support has been deprecated. The existing MISRA checking functionality will remain in further patch versions of this compiler stream as is, but no further issues will be addressed.