
My thanks to the guys at TI. They were able to track down the issue to a problem in <limits>. Below is the workaround they sent me. Here is the workaround. Edit <limits>. It is found in the \include directory of the compiler distribution. The changes take place within the specialization of the numeric_limits template for the types long and unsigned long. For example, the long specialization starts with these lines ... // CLASS numeric_limits<long> template<> class numeric_limits<long> : public _Num_int_base { // limits for type long Within each specialization there are instances of the expression "CHAR_BIT * sizeof(long)" or "CHAR_BIT * sizeof(unsigned long)". Replace each one with "40". The problem is on C6000 the type long is 40-bits wide, but stored in 64-bit wide chunks in memory. Those expression for computing the number of value bits in the type presume all the bits in storage are used for the value. Not the case for these types.