CC-RX


The product name of CubeSuite+, an integrated development environment from Renesas, 
has been changed to "CS+" from V. 3.00.00, which was released on October 1, 2014.

Changes from V3.00.00 to V3.01.00 (Jan. 21, 2019)

1. Support for double-precision floating-point processing instructions [RXv3]
    Code that takes advantage of the double-precision floating-point processing instructions that have been included in the RXv3 instruction 
    set architecture is generated for devices with this core. 
    This improves the performance and code size of programs in which the double and long double types are used. When generating code, 
    the new -dpfpu option must be specified as compiler and assembler options.

2. Support for the register bank save function [RXv3]
    The register bank save function that is included in the RXv3 instruction set architecture is now usable. 
    Writing bank =<bank number> with #pragma interrupt causes the saving of register values at the start of the interrupt handler and restoring 
    them at the end of the interrupt handler, both at high speed. 
    To take advantage of this feature, -bank must be specified as an assembler option.

3. Addition of checking source code across multiple files against MISRA-C:2012 rules [Professional edition]
    The -misra_intermodule option has been added to check source code across multiple files against MISRA-C:2012 rules. 
    Although source code had previously only been checked within the individual files, specifying this option now enables the checking 
    of source code across multiple files.
    MISRA-C is a set of software development guidelines whose purpose is to maintain the safety, portability and reliability of embedded systems 
    programmed in the C language.

4. Extensions to the checking of source code against MISRA-C:2012 rules [Professional edition]
    The rule numbers 8.5 and 8.6 have been added as arguments of the -misra2012 option for checking source code against MISRA-C:2012 rules.

5. Addition of the -truncated_address_initializer compiler option
    The -truncated_address_initializer compiler option has been added. 
    With this option specified, the E0520069 error code is not output in response to code for using addresses to initialize the values of 1- or 2-byte 
    external variables or static variables. Instead, the W0520069 warning message is output.

6. Addition of a feature for changing a section name when a library file is input
    The -lib_rename option has been added as an optimizing linkage editor (rlink) option. 
    With this option, section names or symbol names in a file within a library that is input at the time of linkage can be changed and linked, 
    allowing them to be allocated to the addresses where users can easily manage.

7. Enhancement of Optimization
    The code size and speed of execution have been improved by enhancement of optimization on the following points.
    (1) Enhanced use of the MAX, MIN, and BFMOV instructions
        The usage of MAX, MIX, and BFMOV instructions in the generated code has been enhanced.
    (2) Improvement of instruction scheduling
        Feature for rearranging memory access instructions has been enhanced to improve efficiency of pipeline operation.
    (3) Enhanced processing for deleting redundant comparison instructions
        Processing for deleting redundant comparison instructions has been enhanced.

8. Items Revised
    The following points for caution have been corrected.
    - Point for caution when the -misra2012 option is specified (CCRX#050)
    - Point for caution regarding constant expressions that include type conversion from the floating-point type to the 64-bit integer type (CCRX#051)

9. Other Improvements
    Internal errors that occurred sometimes in the build process have been corrected.

Changes from V2.08.00 to V3.00.00 (Nov. 27, 2018)

1. Support for RXv3 Instruction-Set Architecture [RXv3]
    Support for the RXv3 instruction-set architecture has been added.
    By specifying an option -isa=rxv3 for the compiler or assembler, the object codes are generated using the RXv3 instruction-set.

2. Outputting CRC Operation Results to Binary Files
    The results of CRC operation can now be output to binary files.
    In versions earlier than V3.00.00, the -crc option is valid only when -form{hexadecimal | stype} is specified, however, in V3.00.00, 
    it is also valid when -form=binary is specified. 
    This enables the CRC operation results to be output to an abs file that is used during debug.

3. Extension of -output option for Hex File Load Address Origin
    A load-address can now be specified for a suboption of -output=suboption, an optimizing linkage editor option which specifies an output file name.
    When -output=load-address is specified, the starting-point of load address on the file is changed to the address specified in the load-address 
    when an Intel expanded hex file or Motorola S type file is output. 
    This option is useful when generating a file with the Position Independent Code (PIC) function enabled.

4. Section Allocation to Unused Vector Area
    Optimizing linkage editor option -split_vect has been added.
    By using -split_vect, a vector table section is created for each vector number. 
    No section is created for a vector number that is not used, allowing unused vector areas to be used for other purpose.

5. Enhanced Feature for Detecting Illegal Indirect Function Calls [Professional edition]
    Feature for detecting indirect function calls to illegal addresses has been enhanced.
    A library files (*.lib) can now be specified for -cfi_ignore_module option. 
    This allows you to specify more specific target for the detecting function. 

6. Additional Options Available for Library Generator
    Specifying some options for the library generator resulted in a compile error, peventing library generation. 
    This problem has been fixed. 

7. Enhanced Optimization
    Optimization has been improved, such as effective use of array elements that are loaded during repeat statement processing, 
    to increase the execution speed by reducing the number of times array elements are loaded. 

8. Other Modifications
    A problem which causes an internal error during build has been fixed.

9. Items Revised
    The issue described in the following note has been corrected.
    Point for caution regarding the static variable declaration of an array, structure, or union that has an initializer.

Changes from V2.07.00 to V2.08.00 (Jan. 22, 2018)

1. Improved Optimization
    Optimization such as improvement of code generation for bit operation and elimination of redundant sign extension 
    has been improved.

2. Addition of Function to Detect Illegal Indirect Function Calls [Professional edition]
    A function to detect indirect function calls to illegal addresses is now supported. 
    This function is useful for improving the security and quality of programs.

3. Support for Current Consumption Tuning Solution
    The -insert_nop_with_label option to generate objects for the CS + and e2 studio current consumption tuning solution has been added. 
    This function is supposed to be used through CS+ or e2 studio and is not directly used by users.

4. Addition of the Message Level Control Function
    The -no_warning option to suppress warning level and information level messages has been added.

5. Function to Fix the Record Length of Hex Files
    A link option to match the output addresses of an Intel expanded hex file (.hex) and Motorola S type file (.mot) 
    with the specified alignment and perform output with the fixed record length has been added. 
    Since a hex file is always output with a constant record length, efficiency in tasks such as comparison of hex files is improved.

6. Extended Upper Limit of Memory Usage
    The amount of memory on the host PC that CC-RX can use has been expanded. 
    This expansion allows for building of projects larger than previously possible.

7. Problems Fixed
    The problems regarding the points below have been fixed.
    - Using a goto Statement to Move to a Label in a switch Statement (CCRL#045)
    - Loop Statements with Loop-Control Variables in Which Constants are Used as the Condition for Ending the Loop (CCRX#048)

8. Other Modifications
    A problem which led to an internal error in the compiler when building has been fixed.

Changes from V2.06.00 to V2.07.00 (Jul. 20, 2017)

1. Enhanced optimization
    We have improved the performance in the generation of code.

2. Improvements to the feature for checking source code against MISRA-C:2012 rules [Professional edition]
    The number of MISRA-C: 2012 rules against which source code can be checked has been added, from 110 to 119.

3. Addition of a compiler option: -avoid_cross_boundary_prefetch
    When the following string handling library functions are expanded for string manipulation instructions while this option is specified, 
    access to memory is arranged to avoid the crossing of 4-byte boundaries.
    memchr(), strlen(), strcpy(), strncpy(), strcmp(), strncmp(), strcat(), and strncat()

4. Addition of a predefined macro for the assembler: __FPU 
    The macro __FPU is usable in assembler-language source code.

5. Specification of the type of end record of Motorola S-type files
    A linker option -end_record for specifying the types of end records of Motorola S-type files has been added.

6. Change to the specification of link map files
    The ATTRIBUTE column which is the relocation attribute add to “Mapping List” of the link map file.

7. Change to the specifications of link map files and the output of messages when linkage errors occur
    The following error codes and the corresponding error messages are output to the link map file.

8. Change to the specifications of messages when the compiler is operating as the evaluation version
    Messages that are output during operation of the evaluation version are handled as warnings.
    
9. Improved license acquisition times
    The timing of the acquisition of the professional and standard editions of the license has been changed to reduce the effect 
    on build times.

10. Other improvements
    Other major improvements are described below.
    (a) Reduced assembly times during compilation
    (b) Correction of a compiler error
    (c) Improved prevention of internal errors

Changes from V2.05.00 to V2.06.00 (Jan. 20, 2017)

1. Enhanced optimization
    We have improved the performance in the generation of code.

2. Improvements to the feature for checking source code against MISRA-C:2012 rules [Professional edition]
    The number of MISRA-C: 2012 rules against which source code can be checked has been added, from 82 to 110.

3. Change to the Specification of the Optimizing Linkage Editor Option -map/-list
    The -map option enables the optimization of access to external variables. 
    In the past, when the section address was out of the available address range at the first build in which the -map option was specified, 
    it was treated as an error, the build processing was terminated, and the external symbol allocation information file was not created. 
    The specification has been changed in this revision so that even in the situation above, the product continues build processing 
    as far as possible (without assuming an error) and outputs the external symbol allocation information file. 
    The optimization of access to external variables with the -map option has become applicable by this specification change.
    Additionally, a change has been made so that when the -map and -list options are specified simultaneously, 
    the symbol information is output to a link map file.

4. Change to the Specification of the Optimizing Linkage Editor Option –subcommand
    The -subcommand option can now be specified in a subcommand file.

5. Method of authenticating licenses
    The way licenses are authenticated has been changed.
    To use V2.06.00 or a later version of CC-RX, V2.00.00 or a later version of License Manager must be installed.

6. Problems Fixed
    The problems regarding the points below have been fixed.
    - Programs which Include Loops that should be Iterated More than Once (No. 39)
    - Passing an Argument of a Function by Using the Stack (No. 40)
    - Updating of Values of Array Elements, Structure Members, or Union Members Not being Reflected (No. 41)
    - The Loop That Has the Operation Expression of Which Result is Decremented by One (No.42)

7. Other Modifications
    (1)Output of bit-manipulation instructions
       In CC-RX V2.05.00 or earlier, the compiler output bit-manipulation instructions by automatic discrimination 
       in accordance with the optimization level and the contents of source programs. 
       In V2.06.00, users can control such output. 
       For details of the output conditions, refer to the user’s manual.
    (2)Correction of the application target of -noconst_copy
       The problem with not performing constant propagation for the initial value of local variables 
       (when the -noconst_copy option is specified) has been fixed.
    (3)Correction of an internal error
       A problem which led to an internal error in the compiler when building has been fixed.

Changes from V2.04.01 to V2.05.00 (Jul. 21, 2016)

1. Improvements to the feature for checking source code against MISRA-C:2012 rules [Professional edition]
    The following rule numbers have been added to the arguments for -misra2012 option, 
    which allows the compiler to check the source code against MISRA-C:2012 rules.
      2.6 2.7
      9.2 9.3
      12.1 12.3 12.4
      14.4
      15.1 15.2 15.3 15.4 15.5 15.6 15.7
      16.1 16.2 16.3 16.4 16.5 16.6 16.7
      17.1 17.7
      18.4 18.5
      19.2
      20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 20.10 20.11 20.12 20.13 20.14

2. Enhancing the security of dynamic memory management [Professional edition] 
    A feature for the detection of illegal operations in the releasing of heap space has been added.
    To create a standard library with this feature enabled, specify the -secure_malloc option and run the library generator.
    When this feature is enabled, the standard library functions will work as follows.

    By using this feature, you can easily counter security problems through measures against the dual release of memory 
    and against buffers overflowing.

3.Added intrinsic functions
    (1)New intrinsic functions
        We have added the following intrinsic functions for generating bit-manipulation instructions.
        - __bclr()
         Generates a BCLR instruction.
        - __bset()
          Generates a BSET instruction.
        - __bnot()
         Generates a BNOT instruction.

    (2) Aliases for existing intrinsic functions
        We have added aliases for each of the intrinsic function that have been available on V2.04.01 or earlier versions of CC-RX. 

4.Eliminated point for caution
    Scope of optimization (RXC#038)

5.Other improvements
    Other improvements are listed below.
    (a) Reading and writing of temporary files
        The problem of the compiler generating errors when attempting to read from or write to temporary files has been resolved.
    (b) Precision of operations by pow() and powf()
        The margin of error in the results of operations by pow() and powf() has been reduced.
    (c) Internal errors
        The problem of the compiler generating internal errors when compiling has been improved.

6. Strengthening of optimization

Changes from V2.04.00 to V2.04.01 (Dec. 21, 2015)

The following problems have been fixed.
    - "-stack_protector" and "-stack_protector_all" options (RXC#037)

Changes from V2.03.00 to V2.04.00 (Oct. 20, 2015)

1. Standard and Professional editions
    The CC-RX complier has the following two editions.
    - Standard edition
    - Professional edition
    The features of the latter can only be used if the compiler is registered under the professional license. 
    They are indicated as [Professional] from here on.

2. Checking of source code against MISRA-C:2004 rules [Professional]
    The following options can only be used if the compiler is registered under the professional license. 
    (1) -misra2004
    (2) -ignore_files_misra
    (3) -check_language_extension

3. Checking of source code against MISRA-C:2012 rules  [Professional]
    A -misra2012 option, which selects the checking of source code against the MISRA-C:2012 rules, has been added. 
    An –ignore_files_misra option for the selection of files that are not to be checked, 
    and a –check_language_extension option which enables the source-code checking, 
    which are partially suppressed by language extensions, are specifiable at the same time as each other and -misra2012. 

4. Detection of stack smashing [Professional]
    A feature for the detection of stack smashing has been added. 
    This feature can be realized by the -stack_protector/-stack_protector_all compiler options, 
    or the extended language specification #pragma stack_protector/#pragma no_stack_protector.

5. Extensions to CRC calculation
    The -CRC option of the optimizing linkage editor has been extended as follows.
    - The range for calculation can be specified by a section name.
    - Various methods of calculation have been added.
    (1) 16-CCITT-MBS
        The result of calculation is obtained by applying CRC-16-CCITT to the input MSB first.
    (2) 16-CCITT-MSB-LITTLE-4
        The input is a 4-byte unit with little endian. 
        The result of calculation is obtained by applying CRC-16-CCITT to the input MSB first.
    (3) 16-CCITT-MSB-LITTLE-2
        The input is a 2-byte unit with little endian. 
        The result of calculation is obtained by applying CRC-16-CCITT to the input MSB first.
    (4) 16-CCITT-LSB
        The result of calculation is obtained by applying CRC-16-CCITT to the input LSB first.
    (5) SENT-MSB
        The input is 1 byte, with the higher- and lower-order 4 bit units in little endian. 
    The result of calculation on the input MSB first is obtained with SENT compliance.
    (6) 32-ETHERNET
        The result of calculation is obtained by applying CRC-32-ETHERNET to the input. 
        The initial value of the result is 0xFFFFFFFF, and is XOR inverted and the bit order is reversed.

6. Enhanced support for UTF-8
    The following options have been extended or added.
    - Extended the -utf8 option and -outcode=utf8 option.
      Those options are now always selectable, not only when -lang=c99 option is also selected.
    - Added a new assembler option –utf8.
      String literals and comments in assembly source are handled as encoded in UTF-8.

7. Other improvements
    Other improvements are described below. 
    (1) Improved debugging information
        Unnecessary debugging information was deleted to reduce the sizes of object files (*.obj) and load module files (*.abs).
    (2) Fixed incorrect display when stepping
        When stepping over an if statement, and it has a condition expression including any of the operators below, 
        the debugger displayed an incorrect result. 
        The problem has been fixed.
            &&  ||  !  ?:
    (3) Internal errors
        Some of internal errors has been fixed.
    (4) Optimization
        The performance and the size of generated code have been improved.
    (5) Compiling time
        Compiling some programs with optimization took excessive time. 
        This problem has been relieved by shortening the times.

Changes from V2.02.00 to V2.03.00 (Feb. 5, 2015)

1. Strengthening of optimization
    The performance improvement of a generated code was carried out.

2. Supporting of reentrant in the standard library [C standard library (library generator)]
    By setting -reent option as a library generator (lbgrx), C standard library of reentrant can be made.
    Please make 3 low level functions to generated C standard library. It's possible to make the C standard library function 
    besides the rand function and the srand function reentrant.

3. Supporting of restraint of outputting data to the free space .OFFSET preprocessing directive generated
    [C/C++ Compiler, Assembler, Optimization linkage editor]
    By describing .OFFSET preprocessing directive, the function (-create_ufilled_area option) which restrains 
    output of the invalid data (03H) made a s-type record file (-.mot) or a hex file (-.hex) was supported.

4. Addition of predefined macro [C/C++ Compiler, Assembler]
    Next predefined macro was added.
    [C/C++ compiler]
      __CCRX__ It's shown to be compiled by ccrx as C/C++ source.
    [Assembler]
      __ASRX__ It's shown to be compiled by asrx as an assembly source.
      __RENESAS__ It's shown that it's an assembler made by Renesas.

5. Changing the output order of the variable allotted to const territory [C/C++ compiler]
    When there were both of a variable with defaults and a variable which has no defaults in the variable allotted 
    to const area, the order which outputs a variable to a section was changed.
    For more information, please refer to the following contents on a user's manual.
    11.4.3 V2.03 After [the compatibility with V1.00 - V2.02]
    (1) About the staticdeflection variable which has no defaults by the const type

6. Problems Fixed
    The following problems have been fixed:
    - Aggregate values having initializer that a part was omitted(RXC#034)
    - Point to note regarding static aggregates and unions within a function having initial values of address constant
     expression (RXC#035)
    - Point to note regarding the use of both judgment of a match and greater or less than for variables (RXC#036)

Changes from V2.01.00 to V2.02.00 (Jul. 16, 2014)

1. Optimization Improved
    Various optimization facilities have been improved and code generation made more efficient.

2. Strengthened Performance in Floating Point Arithmetic When the Floating Point Processing Unit (FPU) is Not in Use
    Performance in floating point type operations when the FPU is not in use has been improved.

3. Problems Fixed
    The following problems have been fixed:
    - With using the -smap and -goptimize options when there is no reference to a symbol (RXC#029)
    - With specifying the __evenaccess keyword for a variable which is used in a conditional statement (RXC#031)
    - With using the -smap and -goptimize options when there is access to a const variable (RXC#032)
    - With specifying #pragma address for structures, unions, and arrays (RXC#033)

Changes from V2.00.01 to V2.01.00 (Nov. 18, 2013)

1. Supporting the New CPU Core, the RXv2
    The new CPU core, the RXv2, of the RX Family is supported.

2. Optimization Improved
    Performance of the generating code has been improved.

3. Restrictions Lifted
    The following restrictions have been lifted:
    - Restriction of PID function (nouse_pid_register option)
    - Using the Standard Library (See NOTE)
    - Note on using functions for which instalign or #pragma instalign8 has been specified

    NOTE:
      This restriction was for customers who had upgraded the compiler from V1.02.00 to V1.02.01.

4. Problems Fixed
    The following problems have been fixed.
    - Problem causing internal error C0530001 to occur
    - Problem when the storage area of a structure variable is not allocated correctly (RXC#025)

Changes from V2.00.00 to V2.00.01 (Jun. 17, 2013)

The following problems have been fixed.
    - Problem when the repeat count of the loop differs from that written in the source file (RXC#023)
    - Problem when the -optimize=0, -debug, and -schedule options are all used (RXC#024)

Changes from V1.02.01 to V2.00.00 (Apr. 16, 2013)

1. New optimization engine for enhance optimization [C/C++ Compiler]

2. Stronger optimization over greater ranges during the process of compilation [C/C++ Compiler]
    (a) -merge_files option to allow the compiler to compile multiple source files and output the results in a single object file
       (except in the case of C++ and EC++ files).
    (b) -whole_program option to make the compiler perform optimization on the assumption that the input files form a complete program.
    (c) -ip_optimize option to apply global optimization (i.e. optimization spanning functions).

3. Support for big5 (traditional characters) and gb2312 (simplified characters) Chinese character sets [C/C++ Compiler]
    
4. Changes to assembly source code output [C/C++ Compiler]
    Assembly source code output when -output=source or -listfile is specified differs to that output by version 1.xx of
    the compiler in the following ways.
    (a) Tabs are inserted before and after each RX instruction and assembler directive.
    (b) .LINE directives are not output unless -debug has been specified.
    (c) Information on some labels used by the compiler in its internal processing may be output as comments.
    (d) When -show=source is specified, #include statements are displayed without expansion.
    (e) When -show=source is specified, lines that follow a #line directive may be shown differently from those in the actual source code.

5. Types of global variables in the debugging environment [C/C++ Compiler]    
    When two or more declarations include the definition of a global variable and the types do not match in all cases, 
    the defined types are used in the display of the variable in the debugging environment.

6. Corrections to faults
    (a) The following problems with the linkage editor have been corrected.
          L1320 was output even if there were no duplicate symbols between files.
          L1320 was not output even if there were duplicate symbols between files.
    (b) When the -rom option was used to allocate a section of size zero that had a boundary alignment value of two or more
          in the location counter for the RAM, symbols defined in ROM sections were not correctly allocated to RAM sections.

7. Destination of output messages (all commands)
    The destination of output messages has been changed from standard output to standard error.
        

Changes from 1.02.00 to 1.02.01

The following problems have been fixed.
    - Problem with casting the address for indirectly referencing an element of an array to a pointer whose type is different 
      from that of the array (RXC#021)
    - Problem with making function calls immediately before all the exits from a function (RXC#022)
    - Problem that the C4098 or C4099 internal error arises