This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Release notes for CGT

Hi!

I'm using CCS for MSP430F54xx programming . I just upgraded from v4.0.1 to v4.1.2.
I now experience odd behaviour of compiled binary, so i wanted to check the difference of MSP430 compiler 3.2.2 to 3.2.1.

Where do I find the Release Notes for the MSP430 compiler??

best regards,
Gregor Bader 

  • Check out the readme.txt file in the root directory of the compiler installation.  Here is the full path on my machine: C:\Program Files\Texas Instruments\ccsv4\tools\compiler\msp430\readme.txt .

    Thanks and regards,

    -George

     

  • Is there any way to view MSP430 compiler release notes without installing the software (I'm usually conservative about installing software, even if I don't have to point CCS to the new compiler). I searched high and low in TI wikiland to no avail.

    Thanks,

    Dan

  • Hi,

    I think you will have to install it, if you check this Wiki (http://processors.wiki.ti.com/index.php/Compiler_Releases) that the only way to update MSP430 and ARM compilers is using CCS and if you go to the Code Generation Tools Download (login necessary): https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm, the MSP430 compiler is not listed either.

    Regards

  • Well, I would be happy to post them here.  Which release notes do you want to see?

    Thanks and regards,

    -George

  • MSP Compiler Tools 4.1.2, which just came out.

    Thanks

    Incidentally, this page: https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm

    does point to release notes for some TI compilers, just not the MSP430.

  • MSP430 C/C++ CODE GENERATION TOOLS
    4.1.2 Release Notes
    August 2012
    
    ===============================================================================
    Contents
    ===============================================================================
    1)  Features new to version 4.1.0
        1.1) Ultra-Low-Power (ULP) Advisor
        1.2) Vector initialization warning
        1.3) Improved hardware multiply support
        1.4) printf_support extended for scanf 
    2)  Support for MSP430 EABI
        2.1) Features
        2.2) Usage
        2.3) 64-bit "double"
        2.4) Table-Driven Exception Handling
        2.5) Compiler Version 3.3.0 Compatibility
        2.6) Migration from COFF to ELF
    3)  Support for 64-bit "long long int"
    4)  Support for C99 floating-point functions
    5)  Support for C++ <complex>
    6)  Support for packed data types
    7)  Support for #pragma location
    8)  Support for noinit and persistent objects
    9)  Improved use of hardware multiply
    10) More aggressive optimization by default
    11) Fewer pre-built libraries, automatic library building
    12) Customer Support Information
        12.1) Defect History
        12.2) Compiler Wiki
        12.3) Compiler Documentation Errata
        12.4) TI E2E Community
        12.5) Defect Tracking Database
    
    
    -------------------------------------------------------------------------------
    1) Features new in version 4.1.0
    -------------------------------------------------------------------------------
    
    1.1) Ultra-Low-Power (ULP) Advisor
    ----------------------------------
    
    The MSP430 compiler supports a new feature, ULP Advisor, that emits remarks 
    for power improvements.  To emit power advice, use below shell option (or in
    CCS choose "Advanced Options > ULP Advisor"):
      > cl430 --advice:power=all <src_file> -z -l<lnk.cmd>
    
    ULP Advisor highlights:
     - Checks your code against an MSP430 ULP Checklist.
     - Rules have been created and verified by industry low power experts.
     - The ULP Advisor wiki includes a description of each rule, proposed remedies,
       code examples & links to related e2e online forum posts.
     - More details at:  www.ti.com/ulpadvisor 
    
    
    1.2) Interrupt sub-routine (ISR) vector initialization warning
    --------------------------------------------------------------
    
    The MSP430 linker will now emit a warning for any ISR vectors that have 
    not been initialized.
    
    
    1.3) Improved hardware multiply support
    ----------------------------------------
    
    Some multiplications will be more efficient when hardware multiply support 
    is enabled.  The following multipication operations are now more efficient 
    than they were with compiler version 4.0.x:
       
       When 16-bit multiply hardware is used:           U32xU32->64
       When 16-bit or 32-bit multiply hardware is used:   64x64->64
    
    
    1.4) printf_support extended for scanf 
    ---------------------------------------
    
    The --printf_support compiler option, which formerly applied only to all 
    members of the printf family of library functions, will now also apply to all
    members of the scanf family.  This greatly reduces the code size of scanf 
    when --printf_support is used. 
    
    This is a compatibility issue if there is any project which uses both printf 
    and scanf and uses the --printf_support option to reduce the capability of the
    printf format specifiers, but relies on those same format specifiers for scanf.
    With this change, when using scanf and --printf_support, you are restricted to
    only the subset of formats allowed by the --printf_support mode you select.
    
    The valid values are:
    - full:    Supports all format specifiers. This is the default.
    - nofloat: Excludes support for printing/scanning floating point values.
               Supports all format specifiers except %f, %F, %g, %G, %e, %E.
    - minimal: Supports the printing/scanning of integer, char, or string values
               without width or precision flags. Specifically, only these format 
               specifiers are supported: %%, %d, %o, %c, %s, %x 
    
    
    -------------------------------------------------------------------------------
    2) Support for MSP430 EABI (Embedded Application Binary Interface)
    -------------------------------------------------------------------------------
    
    Starting with the MSP430 4.0.0 compiler supports a new ABI (Application 
    Binary Interface), MSP430 EABI, in addition to the current COFFABI.
    
    
    2.1) Features
    -------------
    
    MSP430 EABI is an ABI for the MSP430 architecture based on the ELF object file
    format.  The major features are:
    
     - ELF object format
     - DWARF3 debug format
     - Improved "GPP parity"
    
    The advantage of EABI is that it provides a modern, well-documented ABI that is
    well-supported.  Many newer C++ language features, such as template
    instantiation and "extern inline," can be implemented more effectively.
    
    Future development of TI's MSP430 compiler will be primarily implemented within
    EABI.  We encourage users to consider switching to EABI at their earliest
    convenience.
    
    
    2.2) Usage
    ----------
    To compile using EABI, use the shell option --abi=eabi.  
    
    Compile:
      > cl430 --abi=eabi <src_file> 
    
    Compile and link:
      > cl430 --abi=eabi <src_file> -z -l<lnk.cmd>
    
    When no RTS library is specified in the command line, the linker will choose
    the right RTS library, provided the RTS library search path environment
    variable (MSP430_C_DIR) is set.
    
    
    2.3) 64-bit "double"
    --------------------
    
    In EABI mode, the C standard type "double" is 64 bits.  In COFF ABI mode, the
    "double" type remains 32 bits.
    
    Because the C standard requires the compiler to treat unsuffixed
    floating-point constants as type "double," the compiler is required use
    double-precision arithmetic for expressions involving such constants.
    Programs which use such constants may run a little slower in EABI.  This
    performance can be reclaimed by changing the constants to have the suffix "f".
    
    
    2.4) Table-Driven Exception Handling
    ------------------------------------
    
    MSP430 compiler version 4.0.0 supports table-driven exception handling for
    ELF executables.  Table-driven exception handling is more time-efficient than
    setjmp/longjmp support when exceptions are not thrown.
    
    The user interface is almost entirely the same as the COFFABI support; use the
    option --exceptions and link with an RTS which has exception handling enabled.
    For EABI only, if you have any 'extern "C"' functions which need to throw
    exceptions, you must use the option "--extern_c_can_throw".
    
    The underlying implementation is very different.  No support will be provided
    for migrating assembly files generated using the COFF scheme to the EABI
    environment; such files should be recompiled from the original C++ files.
    
    
    2.5) Compiler Version 3.3.0 Compatibility
    ----------------------------------------- 
    
    MSP430 compiler version 4.0.0's COFFABI support is compatible with MSP430
    compiler version 3.3.0.  Projects currently using version 3.3.0 can update to
    version 4.0.0 without any issues, except as noted in section 2, 'Support for
    64-bit "long long int"'.  The version 4.0.0 compiler generates COFFABI by
    default, which is compatible with the version 3.3.0 compiler.
    
    
    2.6) Migration from COFF to ELF
    -------------------------------
    
    To take advantage of MSP430 EABI, users must explicitly request it using the
    "--abi=eabi" command-line option.  Object files generated with this option will
    not be compatible with object files generated for COFFABI.  However, most C
    source files will not require modification, and most assembly source files will
    require only trivial modification.
    
    The major differences between EABI and COFFABI are:
    
     - Different name mangling 
       - C++ names are mangled using IA64 name mangling scheme
     - Different C auto-initialization
    
    However, there are many more details.  Review the MSP430 EABI Migration
    document for these migration details.
    
    Users need to take specific steps to migrate their projects to EABI:
    
     - COFF objects and libraries are not compatible with EABI objects; programs
       and libraries must be recompiled from source.  There is no COFF to ELF
       conversion utility.
    
    Please refer to the MSP430 EABI Migration document for details.
    
    
    -------------------------------------------------------------------------------
    3) Support for 64-bit "long long int"
    -------------------------------------------------------------------------------
    
    The C99 type "long long int", which is a 64-bit integer type, is now supported
    as a language extension (the compiler supports C89).  All of the necessary
    library functions are supported, including the printf format specifier "%lld".
    
    Because this type represents a new largest integer type, the stdint.h types
    intmax_t and uintmax_t, and the corresponding MAX and MIN macros, have
    different values.  Any object file compiled from C sources which used these
    identifiers will not be compatible with object files compiled with the newer
    compiler.  Recompile these object files.
    
    
    -------------------------------------------------------------------------------
    4) Support for C99 floating-point functions
    -------------------------------------------------------------------------------
    
    The MSP430 library now provides more C99 library functions as extensions.
    
    The following macros are now supported:
    
        INFINITY NAN FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL FP_ZERO FP_ILOGB0
        FP_ILOGBNAN MATH_ERREXCEPT MATH_ERRNO math_errhandling
    
    The following function-like macros are now supported:
    
        fpclassify isfinite isinf isnan isnormal signbit isgreater isgreaterequal
        isless islessequal islessgreater isunordered
    
    The following C99 float and long double versions of existing C89 functions are
    now supported:
    
        acosf acosl asinf asinl atanf atanl atan2f atan2l
        cosf cosl sinf sinl tanf tanl
    
        coshf coshl sinhf sinhl tanhf tanhl expf expl
    
        frexpf frexpl ldexpf ldexpl logf logl log10f log10l
        modff modfl fabsf fabsl powf powl sqrtf sqrtl
    
        ceilf ceill floorf floorl fmodf fmodl
    
    The following entirely new C99 functions are now supported:
    
        acosh acoshf acoshl asinh asinhf asinhl atanh atanhf atanhl
    
        exp2 exp2f exp2l expm1 expm1f expm1l
        ilogb ilogbf ilogbl
        log1p log1pf log1pl log2 log2f log2l logb logbf logbl
        scalbn scalbnf scalbnl scalbln scalblnf scalblnl cbrt cbrtf cbrtl
    
        hypot hypotf hypotl
    
        erf erff erfl erfc erfcf erfcl lgamma lgammaf lgammal tgamma tgammaf
        tgammal
    
        nearbyint nearbyintf nearbyintl rint rintf rintl lrint lrintf lrintl
        llrint llrintf llrintl round roundf roundl lround lroundf lroundl llround
        llroundf llroundl trunc truncf truncl
    
        remainder remainderf remainderl remquo remquof remquol copysign copysignf
        copysignl nan nanf nanl nextafter nextafterf nextafterl nexttoward
        nexttowardf nexttowardl fdim fdimf fdiml fmax fmaxf fmaxl fmin fminf fminl
        fma fmaf fmal
    
    
    -------------------------------------------------------------------------------
    5) Support for C++ <complex>
    -------------------------------------------------------------------------------
    
    The C++ header file <complex>, which supports complex arithmetic, is now
    supported.  C99 complex floating-point types are not supported.
    
    
    -------------------------------------------------------------------------------
    6) Support for packed data types
    -------------------------------------------------------------------------------
    
    The GCC type attribute "packed" is now supported on structs and unions when
    the --gcc language option is used.  This attribute minimizes the data
    requirement for structures by eliminating padding after unaligned members.
    
    For more information, see: 
    
        http://processors.wiki.ti.com/index.php/GCC_Extensions_in_TI_Compilers
        http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
    
    
    -------------------------------------------------------------------------------
    7) Support for #pragma location
    -------------------------------------------------------------------------------
    
    The compiler supports the ability to specify the runtime address of a variable
    at the source level.  This can be accomplished with the new location pragma or
    attribute.  Location support is only available in EABI.
    
    Syntax:
    
        TI C style pragma:
        #pragma LOCATION(x, address)
        int x;
    
        TI C++ style pragma:
        #pragma LOCATION(address)
        int x;
    
        IAR style pragma:
        #pragma location=address
        int x;
    
        GCC attribute:
        int x __attribute__((location(address)));
    
    
    -------------------------------------------------------------------------------
    8) Support for noinit and persistent objects
    -------------------------------------------------------------------------------
    
    When using EABI, global and static variables will be zero-initialized.
    However, in applications using non-volatile memory, it may be desirable to
    have variables that are not initialized.  Noinit variables are global or
    static variables that are not zero-initialized at startup or reset.  
    
    The noinit pragma may be used in conjunction with the location pragma to map
    variables to special memory locations, like memory-mapped registers, without
    generating unwanted writes.  
    
    Noinit variables cannot have an initializer.  However, statically-initialized
    variables may be declared "persistent" to disable startup initialization.
    Persistent variables are given an initial value when the code is loaded, but
    are never again initialized.  Persistent and noinit variables behave
    identically with the exception of whether or not they are initialized at load
    time.
    
    Syntax:
    
    C style pragma:
    #pragma NOINIT(x)
    int x;
    
    C++ style pragma:
    #pragma NOINIT
    int x;
    
    GCC attribute:
    int x __attribute__((noinit));
    
    C style pragma:
    #pragma PERSISTENT(x)
    int x=10;
    
    C++ style pragma:
    #pragma PERSISTENT
    int x=10;
    
    GCC attribute:
    int x=0; __attribute__((persistent));
    
    
    -------------------------------------------------------------------------------
    9) Improved use of hardware multiply
    -------------------------------------------------------------------------------
    
    The compiler is better able to detect situations where the 16x16->32 hardware
    could be used instead of resorting to the more expensive 32x32->32 software
    function.  The compiler will recognize the following idiom and generate a call
    to the 16x16->32 library function, which will be handled using the hardware
    multiply if the user uses the --use_hw_mpy compiler option.
    
        #include <stdint.h>
        int16_t x,y;
        int32_t z = (int32_t)x * (int32_t)y;
    
    The same is done for 32x32->64 multiply expressions.
    
    
    -------------------------------------------------------------------------------
    10) More aggressive optimization by default
    -------------------------------------------------------------------------------
    
    Starting with version 4.0.0, the compiler will be more aggressive about the
    most basic optimizations, such as using registers for variables.
    
    
    -------------------------------------------------------------------------------
    11) Fewer pre-built libraries, automatic library building
    -------------------------------------------------------------------------------
    
    This release provides fewer pre-built compiler run-time support libraries,
    which makes the CCS package download size much smaller, reducing download
    time.  Users are expected to build less-commonly used libraries as needed.
    The RTS source code is provided in each compiler release, which allows the
    user to build libraries with custom command-line options, and it also allows
    the linker to automatically build missing libraries.
    
    Users with shared or read-only installation directories need to take special
    action to build (at installation time) libraries that will be needed.
    
    More details about the mechanism behind rebuilding libraries can be found at
    the TI Embedded Processors Wiki http://processors.wiki.ti.com/index.php/Mklib
    
          
    -------------------------------------------------------------------------------
    12) Customer Support Information
    -------------------------------------------------------------------------------
    
    12.1) Defect History
    -------------------
    
    The list of defects fixed in this release as well as known issues can be found
    in the file DefectHistory.txt.
    
    12.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://tiexpressdsp.com/wiki/index.php?title=Category:CGT
    
    12.3) Compiler Documentation Errata
    ----------------------------------
    
    Errata for the "MSP430 Optimizing Compiler User's Guide" and the "MSP430
    Assembly Language User's Guide" is available online at the Texas Instruments
    Embedded Processors CG Wiki:
    
    http://tiexpressdsp.com/wiki/index.php?title=Category:CGT
    
    under the 'Compiler Documentation Errata' link.
    
    12.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
    
    12.5) Defect Tracking Database
    -----------------------------
    
    Compiler defect reports can be tracked at the Development Tools bug database,
    SDOWP. The login 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.
    
    -- End Of File --
    

  • There's no difference between the file you posted (presumably the release notes for 4.1.2) and the README.txt found in the 4.1.1 installation (and I suspect it's the same as the 4.1.0 file) (except for the "Release Notes" version line and date up at the top). So what document describes what has changed between 4.1.1 and 4.1.2?

  • The only difference is bug fixes.  Those fixes are recorded in another text file similar to readme.txt, but named DefectHistory.txt.  It is attached below.  This article talks about what you can know about different compiler releases just based on the version number.

    Thanks and regards,

    -George

    MSP430 Code Generation Tools Release Version 4.1.2
    Defect History
    August 2012 
    
    ------------------------------------------------------------------------------
    Table of Contents
    ------------------------------------------------------------------------------
    1. 4.1.2 Fixed Defects
    2. 4.1.1 Fixed Defects
    3. 4.1.0 Fixed Defects
    4. 4.1.0B1 Fixed Defects
    5. Current Known Issues
    
    
    ------------------------------------------------------------------------------
    1. 4.1.2 Fixed Defects
    ------------------------------------------------------------------------------
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00038353
    ------------------------------------------------------------------------------
    
    Summary            : Weak functions not implemented for MSP EABI
    
    Fixed in           : 4.1.2
    Severity           : S3 - Minor
    Affected Component : ELF Linker
    
    Description: 
    MSP EABI supports weak function references, but these were not yet 
    implemented.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043174
    ------------------------------------------------------------------------------
    
    Summary            : Linker fails to honor specific placement for function from
    		     RTS library
    
    Fixed in           : 4.1.2
    Severity           : S2 - Major
    Affected Component : COFF Linker
    
    Description: 
    Linker now honors section placement specification.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043713
    ------------------------------------------------------------------------------
    
    Summary            : Linker fails with internal error
    
    Fixed in           : 4.1.2
    Severity           : S2 - Major
    Affected Component : Linker
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00044048
    ------------------------------------------------------------------------------
    
    Summary            : Enabling vectorization produces incorrect code
    
    Fixed in           : 4.1.2
    Severity           : S2 - Major
    Affected Component : Optimizer
    
    Description: 
    In certain cases, enabling vectorization could result in incorrect code
    being generated.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00044736
    ------------------------------------------------------------------------------
    
    Summary            : Loop nest over two-dimensional array compiles wrong if
    		     inner loop has early exit
    
    Fixed in           : 4.1.2
    Severity           : S2 - Major
    Affected Component : Optimizer
    
    Description: 
    A simple loop nest that iterates over a two-dimensional array, or at 
    least a data structure with two indexed parts (eg, x[i].y[j]), may 
    compile incorrectly if the inner loop has a conditional break.	The 
    compiler converts the indexing into increments, with a correction
    amount at the end of the inner loop, and the early exit causes the converted 
    code to misbehave.  The listed workaround avoids the transformation and
    thus avoids the bug.  The solution in the compiler is to recognise the 
    early break and skip the transformation.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00044781
    ------------------------------------------------------------------------------
    
    Summary            : _swap_bytes mistakenly writes twice to volatile variable
    
    Fixed in           : 4.1.2
    Severity           : S2 - Major
    Affected Component : Code Generator
    
    Description: 
    If the value of an instance of the __swap_bytes intrinsic is assigned
    to a volatile memory location, the compiler could mistakenly use the byte 
    swap direction on the volatile memory location.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00045105
    ------------------------------------------------------------------------------
    
    Summary            : Empty struct as field of parent struct may cause optimiser
    		     abort
    
    Fixed in           : 4.1.2
    Severity           : S2 - Major
    Affected Component : Optimizer
    
    Description: 
    If a struct contains another struct, and the inner struct has no
    fields, and the parent struct is copied whole through an assignment of 
    struct-type variables, the optimiser may abort.
    
    
    ------------------------------------------------------------------------------
    2. 4.1.1 Fixed Defects
    ------------------------------------------------------------------------------
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00037422
    ------------------------------------------------------------------------------
    
    Summary            : Incorrect layout in .cdecls struct
    
    Fixed in           : 4.1.1
    Severity           : S3 - Minor
    Affected Component : Assembler
    
    Description: 
    The attached test case defines a structure which contains a union.  The 
    last field in the structure is assigned the offset 9 by the compiler.  
    The assembler, via .cdecls, assigns that same field the offset 10.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00041434
    ------------------------------------------------------------------------------
    
    Summary            : Compiler optimizes away certain calls to assert()
    
    Fixed in           : 4.1.1
    Severity           : S3 - Minor
    Affected Component : Absolute Lister
    
    Description: 
    Certain assert() statements, most notably "assert(x&1)" and the 
    equivalent "assert(x%2==0)", may be removed by the compiler and thus
    will not do the run-time condition check that is desired.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00042242
    ------------------------------------------------------------------------------
    
    Summary            : Generating incorrect debug info for longs for MSP
    
    Fixed in           : 4.1.1
    Severity           : S2 - Major
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    Fixed issue where CCS expressions view does not correctly display
    values larger than 16 bits stored in registers for MSP430X devices. Fix
    requires CCS 5.2 or later.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00042292
    ------------------------------------------------------------------------------
    
    Summary            : In EABI mode string literals used in member functions
    		     result in static members of the class
    		     and not placed in .const.string
    
    Fixed in           : 4.1.1
    Severity           : S2 - Major
    Affected Component : Parser
    
    Description: 
    In the attached file, the class member Aoperation uses string literals.
    Instead of creating the string literals the parser is generating static
    char array member and initializes it to the string chars.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043607
    ------------------------------------------------------------------------------
    
    Summary            : ELF PCR20 relocations don't use correct PC
    
    Fixed in           : 4.1.1
    Severity           : S2 - Major
    Affected Component : Assembler
    
    Description: 
    For MSP430X EABI (ELF), any instruction using a 20-bit symbolic 
    addressing mode which refers to an object or function in a different 
    section will access or call the wrong address.	The compiler does not 
    generate code triggering this bug.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043721
    ------------------------------------------------------------------------------
    
    Summary            : Upper 32 bits of 64-bit multiplication corrupted on F5
    		     hardware
    
    Fixed in           : 4.1.1
    Severity           : S2 - Major
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    When using --use_hw_mpy=F5, the 64-bit multiplication routine (for
    "long long int" multiplication) would corrupt the upper 32 bits of the
    result.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043868
    ------------------------------------------------------------------------------
    
    Summary            : Linker cannot find include file specified with relative
    		     path
    
    Fixed in           : 4.1.1
    Severity           : S2 - Major
    Affected Component : Linker
    
    Description: 
    This bug occurs because the linker does not properly reset the source
    path after processing an #include, causing a second #include to be
    relative to the wrong path. Any intervening token between the two
    #include directive will overcome this, as will any macro expansion
    (even if empty). For example:
    
    #define SPACE
    #include "../first.cmd"
    SPACE
    #include "../second.cmd"
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043932
    ------------------------------------------------------------------------------
    
    Summary            : Valid instruction RLAX.A Rdst causes internal error
    
    Fixed in           : 4.1.1
    Severity           : S3 - Minor
    Affected Component : Assembler
    
    Description: 
    The emulated instruction "RLAX.A Rdst" is actually implemented as
    "ADDA Rdst, Rdst."  However, the assembler crashes with an internal
    error if the former is used.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043948
    ------------------------------------------------------------------------------
    
    Summary            : IF predicate with negative integer factor simplifies
    		     incorrectly
    
    Fixed in           : 4.1.1
    Severity           : S2 - Major
    Affected Component : Optimizer
    
    Description: 
    An IF predicate with a negative integer factor -- eg, "if (x*(-3) ==
    -9)" -- may be simplified incorrectly, for instance to "if (x == -3)"
    instead of the correct "if (x == 3)".
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00044216
    ------------------------------------------------------------------------------
    
    Summary            : Link time optimization produces error about option
    		     --optimize_with_debug missing its argument
    
    Fixed in           : 4.1.1
    Severity           : S2 - Major
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    An optional parameter of on/off was added to the --optimize_with_debug 
    option. During link time optimization (-o4), an internal tool
    incorrectly requires the option have a parameter, which it won't if the 
    object file was built with an older tool chain. The bug has been fixed and 
    the tool will accept the option with no parameter, which will be interpreted 
    as --optimize_with_debug=on.
    
    
    ------------------------------------------------------------------------------
    3. 4.1.0 Fixed Defects
    ------------------------------------------------------------------------------
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00042242
    ------------------------------------------------------------------------------
    
    Summary            : Generating incorrect debug info for longs for MSP
    
    Fixed in           : 4.1.0
    Severity           : S2 - Major
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    When using --program_level_compile on a combined list of .c files the
    CCS expressions view does not correctly display long variables for MSP430X devices. When long variables are stored in registers they are stored in a register pair, but it seems that only one register's contents (lower bits) is written to expressions view. The compiler itself seems to be storing and using correct values, it only seems a problem in the CCS display.
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043485
    ------------------------------------------------------------------------------
    
    Summary            : ULP advisor check for rule #1 limited to last .c file in
    		     list when using
    		     --program_level_compile
    Fixed in           : 4.1.0
    Severity           : S2 - Major
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    When using --program_level_compile on a combined list of .c files the
    LPM build attribute was always "1" for the combined .obj, resulting in
    an erroneous ULP warning about rule #1 from the linker, even though
    there was LPM code linked into the app.  With some experimentation it
    was determined that the last .c file in the list of .c files must have
    the LPM stuff, otherwise the overall build attribute for the .obj is
    "1".
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00043507
    ------------------------------------------------------------------------------
    
    Summary            : MSP CGT 4.1.0B1 beta testing bugs for ULP advisor
    Fixed in           : 4.1.0
    Severity           : S3 - Minor
    Affected Component : Parser
    
    Description: 
    - fix rule 8.1 for array cases. assignments to arrays and still remark 8.1 
    - update rule 8.1 to NOT flag variables that are volatile
    - issue with while (FCTL3 & BUSY) being flagged for rule 2 when
      it is an exception to rule 3.  So should not get remark for rule 2 or 3.
    
    
    ------------------------------------------------------------------------------
    4. 4.1.0B1 Fixed Defects
    ------------------------------------------------------------------------------
    
    ------------------------------------------------------------------------------
    FIXED  SDSCM00042811
    ------------------------------------------------------------------------------
    
    Summary            : printf("%d") with negative values incorrect for
    		     printf_support=minimal
    
    Fixed in           : 4.1.0B1
    Severity           : S2 - Major
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    printf("%d") is treated as printf("%u") for --printf_support=minimal,
    which means negative values will be printed incorrectly.
    
    Workaround: 
    Use printf_support=nofloat
    
    
    ------------------------------------------------------------------------------
    5. Current Known Issues
    ------------------------------------------------------------------------------
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008248
    ------------------------------------------------------------------------------
    
    Summary: Compilers on PC will not work without TMP set
    
    Description: 
    
    When compiling on the PC, the code generator cannot find the icode 
    file produced by the parser if the environment variable TMP is no 
    set.  If TMP is set, then all appears well.
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008251
    ------------------------------------------------------------------------------
    
    Summary: Printf format '%#04x' fills zeros into wrong location
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008276
    ------------------------------------------------------------------------------
    
    Summary: Linker accepts illegal address ranges and truncates to a valid
             address
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008340
    ------------------------------------------------------------------------------
    
    Summary: directory name with '(' character causes linker error
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008380
    ------------------------------------------------------------------------------
    
    Summary: Linker corrupts DWARF information when c-linking partially linked
             files
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008406
    ------------------------------------------------------------------------------
    
    Summary: Virtual Inheritance information incorrect for DWARF
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008413
    ------------------------------------------------------------------------------
    
    Summary: Static data members missing DW_AT_specification attribute in DWARF
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008414
    ------------------------------------------------------------------------------
    
    Summary: DWARF does not model nested types correctly
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008465
    ------------------------------------------------------------------------------
    
    Summary: Codegen crash because of void pointer dereference
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008466
    ------------------------------------------------------------------------------
    
    Summary: DWARF problem static variables not placed in the right lexical block
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008467
    ------------------------------------------------------------------------------
    
    Summary: TI DWARF bug struct parameters are marked as pointers
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008537
    ------------------------------------------------------------------------------
    
    Summary: assembler expression ~(0x80000000) evaulates as 0x80000000
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008543
    ------------------------------------------------------------------------------
    
    Summary: Forward reference in .space generates an internal error
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008630
    ------------------------------------------------------------------------------
    
    Summary            : printf gives wrong value for pointer when its value is
    		     incremented
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008652
    ------------------------------------------------------------------------------
    
    Summary: pow(2,x) has fairly significant rounding error
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008685
    ------------------------------------------------------------------------------
    
    Summary: DWARF does not correctly represent variables stored in register pairs
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008690
    ------------------------------------------------------------------------------
    
    Summary: STABS variables declared in loop bodies are promoted to function
             scope
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008928
    ------------------------------------------------------------------------------
    
    Summary: Extern inline functions are not supported
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00008930
    ------------------------------------------------------------------------------
    
    Summary: C++ allows enumerators larger than 'int' but C6x Compiler does not
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00013456
    ------------------------------------------------------------------------------
    
    Summary: fgets in _IONBF mode does not respect size limit
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00014430
    ------------------------------------------------------------------------------
    
    Summary: calloc doesn't check arguments to make sure the requested size is
             reasonable
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00016782
    ------------------------------------------------------------------------------
    
    Summary: linker is giving a reference error for a dead function
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00018691
    ------------------------------------------------------------------------------
    
    Summary: Linker gives misleading warning when dot expressions used in SECTION
             directive for .stack section
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00023532
    ------------------------------------------------------------------------------
    
    Summary: C++ Perennial test cases cause PC optimizer to hang (or at a minimum
                 executes for hours before exiting)
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00030125
    ------------------------------------------------------------------------------
    
    Summary: Linker generates confusing error message and fails
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00035379
    ------------------------------------------------------------------------------
    
    Summary: C++ requires overloaded abs() and div() in stdlib.h
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00036146
    ------------------------------------------------------------------------------
    
    Summary: During -O4, the compiler creates the .cl file in the current
             directory instead of as a temp file
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00036474
    ------------------------------------------------------------------------------
    
    Summary: DWARF .debug_info section has multiple instances of the same string
             even after --compress_dwarf is used.
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00036663
    ------------------------------------------------------------------------------
    
    Summary: Incorrectly performing function specialization with -o4
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00037170
    ------------------------------------------------------------------------------
    
    Summary: Embed does not handle cross-filesystem rename correctly
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00037328
    ------------------------------------------------------------------------------
    
    Summary: _c_int00_*mpu_init functions should be in ".text_isr"
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00038385
    ------------------------------------------------------------------------------
    
    Summary: Defaulting to automatic RTS library selection causes linker to not
             recognize rts library specified in linker command file
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00039675
    ------------------------------------------------------------------------------
    
    Summary: MSP430 assembler problem with PC relative addressing in pseudo
             instructions
    
    Description: When there are two PC-relative operands in the same instructions,
                 one of the PC offsets may not be encoded correctly.
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00040650
    ------------------------------------------------------------------------------
    
    Summary: If specifying 400 or more to precision of output format specifier, it
             is shut down incorrectly.
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00040658
    ------------------------------------------------------------------------------
    
    Summary: The assignment of value using pointer for the method of "static"
             struct or union is not done correctly.
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00040665
    ------------------------------------------------------------------------------
    
    Summary: Internal Compiler Error
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00040934
    ------------------------------------------------------------------------------
    
    Summary: Structure is not initialized correctly when using -o2 or -o3
             optimization
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00042327
    ------------------------------------------------------------------------------
    
    Summary            : Compiler reports incorrect violation of Misra 10.1
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00042328
    ------------------------------------------------------------------------------
    
    Summary            : Compiler reports incorrect violation of Misra 6.1
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00042344
    ------------------------------------------------------------------------------
    
    Summary            :  Compiler sometimes generates internal error: illegal 
                          initialization or segmentation fault when using gcc 
                          extension nested designed initializers.
    
    Work around:
    The seg fault can be worked around if the nested designated initializer is 
    removed.
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00042444
    ------------------------------------------------------------------------------
    
    Summary            : Expression that multiplies two constants incorrectly
    		     triggers MISRA rule 10.1 about implicit conversion
    
    Description: 
    The expression ...
       var_int16 = 4 * 256;
    contains no implicit conversions.  However, MISRA rule 10.1 about no
    implicit conversions is still emitted for that expression.
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00042600
    ------------------------------------------------------------------------------
    
    Summary            : Ill advised enum scalar usage gets MISRA diagnostic, but
    		     similar usage of enum array does not
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00042839
    ------------------------------------------------------------------------------
    
    Summary            : Update linker command files shipped with product to
    		     allocate .data
    Affected Component : Runtime Support Libraries (RTS)
    
    Description: 
    EABI changes the set of data sections generated by the compiler.  All linker 
    command files need to be updated to allocate .data
    
    Otherwise, you get:
        warning: creating output section ".data" without a SECTIONS specification
    
    .data is not a new section.  It is the usual section for data in hand-code 
    assembly.  However, the MSP compiler will never generate a use of the .data 
    section in COFF ABI (unless the user explicitly uses DATA_SECTION).  Thus, the 
    linker command file should be prepared to place .data even for COFF ABI.
    
    Here is the list of target content sections that are generated by the MSP 
    compiler for EABI mode but not COFF ABI mode:
            .data (read/write data)
            .mspabi.exidx (read-only metadata)
            .mspabi.extab (read-only metadata)
            .init_array (new name for .pinit, which is read-only data)
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00043485
    ------------------------------------------------------------------------------
    
    Summary            : ULP advisor check for rule #1 limited to last .c file in
    		     list when using --program_level_compile
    Affected Component : C/C++ Compiler (cl)
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00043605
    ------------------------------------------------------------------------------
    
    Summary            : Linker segfaults linking partially linked file when partial
    		     link includes RTS library, ELF, and exceptions
    Affected Component : ELF Linker
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00043917
    ------------------------------------------------------------------------------
    
    Summary            : Images not displayed when no Internet connection when using
    		     ULP Advisor
    Affected Component : Linker
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00043998
    ------------------------------------------------------------------------------
    
    Summary            : The compiler option setting for Function Subsections
    		     displays an empty drop-down list
    Affected Component : C/C++ Compiler (cl)
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00044056
    ------------------------------------------------------------------------------
    
    Summary            : Compiler misreports Misra warning 10.1
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    Compiler misreports MISRA warning 10.1/R for the following code.
    
    typedef enum _MyEnum { One, Two } MyEnum;  
    MyEnum MyVariable;     
    
    int foo(void)  
    {      
    	int result = 1; 	
    	if (One == MyVariable)	// fails here with MISRA-C2004 10.1/R  
       
    	{	   result = 2;	    }	       
    	return result;	
    } 
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00044121
    ------------------------------------------------------------------------------
    
    Summary            : Linker option --retain is not displayed in CCS GUI or when
    		     typing cl430 --help
    Affected Component : ELF Linker
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00044163
    ------------------------------------------------------------------------------
    
    Summary            : TI MSP430 compiler generates invalid local variable
    		     location debug info when optimization is turned on.
    Affected Component : C/C++ Compiler (cl)
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00044286
    ------------------------------------------------------------------------------
    
    Summary            : Linker cannot extract a subsection from a library module
    Affected Component : Linker
    
    Description: 
    The user supplies an implementation of putchar.  The function fputc is
    also called.  Upon linking, this error message is observed
    
    error symbol "putchar" redefined first defined in "try1.obj"; redefined
    in
       "C\Program Files\Texas
    Instruments\ccs5_2\ccsv5\tools\compiler\msp430\lib\rts430.lib<fputc.obj
    >"
    
    Both putchar and fputc are defined in the RTS library module fputc.obj.
     But they are each in their own subsection.  
    
    ------------------------------------------------------------------------------
    KNOWN ISSUE  SDSCM00044836
    ------------------------------------------------------------------------------
    
    Summary            : Prototypes for certain intrinsics are missing from the
    		     intrinsics.h file
    Affected Component : C/C++ Compiler (cl)
    
    Description: 
    Looking at the intrinsics.h header file, it is missing prototype
    information for following intrinsic functions
    
    •_no_operation()
    •_data16_read_addr()
    •_data16_write_addr()
    
    To meet good C programming style, each function should have its own
    prototypes. Indeed the code compiles without errors, because these are
    all intrinsic functions. But they still lack the necessary information
    to the prototype.