CC-RH Change History

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 V2.05.00 to V2.06.00 (Jan. 22, 2024)

1. Modification of the -P option
    If a file other than a C source file was used as the input when the -P option has been specified,
    preprocessing is executed with this input file handled as a C source file, and in such cases,
    this would almost always lead to an error. This problem has been modified by including a check of 
    the filename extension of the input file to make sure that only C source files are subject to preprocessing.

2. Addition of the -ALLOW_OPTIMIZE_ENTRY_BLOCK option
    The -ALLOW_OPTIMIZE_ENTRY_BLOCK option, which specifies the entry address of the execution program 
    as a target for optimization, was added to the linker. Use of this option may enlarge the scope of 
    optimization at the time of linkage.

3. Modification of the specifications of the -ROM option
    The specifications were modified so that wildcard characters can be specified for the -ROM option of the linker.

Changes from V2.04.01 to V2.05.00 (Jan. 20, 2023)

1. Specification of multiple -crc options
    Specifying multiple -crc options at the same time enables CRC calculation in multiple areas at once.

2. Elimination of an unnecessary message when using the va_start macro
    The problem of an unnecessary warning (W0520549) occurring when using the va_start macro has been eliminated.

Changes from V2.04.00 to V2.04.01 (Sep. 20, 2022)

1. Addition of the -Xpatch=br_jr option
    The parameter "br_jr" has been added for the compiler option -Xpatch.
    Specifying this parameter inhibits generation of the br disp9, jr disp22, and jr disp32 instructions.
    This parameter is ignored if -Xcpu=g3kh is not specified.

2. Addition of the -RESERVE_PREFETCH_AREA option
    The -RESERVE_PREFETCH_AREA option has been added as a link option.
    When this option is specified with a section name, the 16-byte area from the end of the specified section is filled with zeros.

3. Other changes and improvements
    The E0562436 error that occurred when using a library have been rectify.

Changes from V2.03.00 to V2.04.00 (Jan. 20, 2022)

1. Addition of the -misalign Option
    The -misalign option has been added for the generation of code that applies the hardware function of misaligned access to memory by the MCU.

2. Addition of the -Xpatch=br Option
    The parameter "br" has been added for the -Xpatch option. 
    When this option is not specified, br disp9 instructions are not generated under certain conditions. 

3. Addition of the .dbl_size Directive
    The .dbl_size directive has been added to allow locating the information regarding the setting by the -Xdbl_size option of the compiler in the object code. 
    When this directive is used, an error will occur if the setting of the -Xdbl_size option for one module to be linked differs from that in another module 
    to be linked.

4. Addition of a Character That Can Be Specified in Symbol Names
    The character '$' can now be specified in symbol names. Note, however, that a symbol name must not begin with '$'.

5. Improvement of Messages Regarding the Compiler License
    The target type of license and the required actions have been added to messages regarding the compiler license.

6. Modification of the storage duration of variables
    The function for improving the efficiency of reference to variables defined with the storage class specifier "static" has been enhanced.

7. Problem Fixed
    The following problems have been fixed.
    - Use of struct/union type arguments (No.34)
    - Cast from pointer type to other type (No.35)
    - Use of an anonymous struct/union (No.36)
    - Use of an address read from memory after writing the address to the memory (No.37)
    - Reference to global/static variables (No.38)

Changes from V2.02.00 to V2.03.00 (Jan. 20, 2021)

1. Addition of the -stuff Option
    The -stuff option has been added to allocate each variable to a section depending on the alignment value.

2. Addition of the -Oalign Option
    The -Oalign option has been added to perform optimization that involves a change in the variable alignment condition. 

3. Functional Expansion of #pragma section
    You can now specify placement-destination sections individually without affecting each other's specification.
    - const-type variable and string literal
    - non-const-type variable

4. Addition of the -VERBOSE Option
    The -VERBOSE option has been added to display detailed information during linking. 
    Specifying the CRC parameter, you can view the results of CRC calculation and the address of the output position.

5. Improved Optimization
    Optimization has been improved so that optimization can be easily applied by moving memory access instructions 
    across built-in function calls or copies of aggregates. 

6. Problem Fixed
    The following problems have been fixed.
    - Note on writing the constant value 0 to a 2-byte area (No.29)
    - Performing the tail call optimization (No.30)
    - Using the -Xintermodule option (No.31)
    - Using the -pic option (No.32)
    - Using the switch statement (No.33)

Changes from V2.01.00 to V2.02.00 (Jan. 20, 2020)

1. Extensions to the Checking of Source Code Against MISRA-C:2012 Rules [Professional edition]
    The rule8.12, rule14.2 and rule14.3 have been added as arguments of the -Xmisra2012 option for checking source code against MISRA-C:2012 rules.

2. Writing the #pragma section directive within functions
    The #pragma section directive can be written within functions.

3. Generation of code to produce approximate results
    The option has been added for generating code which produces approximate results for floating-point calculations.

4. Improvement to code generated
    The codes for loop processing and ternary expression had been improved.

5. Allowing the specification of the same module names during the generation of a library
    The option has been added for allowing the specification of the same module names during the generation of a library.

6. Problem Fixed
    The following problems have been fixed.
    - Comparison expressions in a loop (No. 25)
    - Mathematical library function atan (No. 26)
    - #pragma block_interrupt directive (No. 27)
    - Using the -Xalias=ansi option (No.28)

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

1. Addition of Checking Source Code Across Multiple Files Against MISRA-C:2012 Rule [Professional edition]
    The -misra_intermodule option has been added to check source code across multiple files against MISRAC:2012 rules.

2. Extensions to the Checking of Source Code Against MISRA-C:2012 Rules [Professional edition]
    The rule8.5 and rule8.6 have been added as arguments of the -Xmisra2012 option for checking source code against 
    MISRA-C:2012 rules.

3. Link-Time Optimization
    Link-time optimization in the form of the removal of unused functions and variables has been added.

4. Addition of a Feature for Changing a Section Name When a Library File is Input
    Section names or symbol names in a file within a library that is input at the time of linkage can be changed and linked.

5. C99 Standard Library Functions
    Part of the C99 standard library functions have been supported.

6. Problem Fixed
    The following problems have been fixed.
    - Point for caution regarding constant expressions that include type conversion from the floating-point type to 
      the 64-bit integer type (No. 23)
    - Point for caution when the -Xmisra2012 option is specified (No. 24)

Changes from V1.07.00 to V1.07.01 (Jan. 21, 2019)

1. Problem Fixed
    The following problems have been fixed.
    - Static declaration of a structure, an array, or a union that has an initializer (No. 19)
    - Assembly-language code using reserved symbol (No. 20)
    - Section where the initializers of auto variables are allocated when the -Xmulti_level option is specified (No. 21)
    - Compiler option “-store_reg” (No. 22)
    - Point for caution regarding constant expressions that include type conversion from the floating-point type to 
      the 64-bit integer type (No. 23)
    - Point for caution when the -Xmisra2012 option is specified (No. 24)

Changes from V1.07.00 to V2.00.00 (Jul. 20, 2018)

1. G4MH Core Instruction Set
    The G4MH core instruction set has been supported.

2. Extended Floating-Point Operation Instruction
    A compile option to output save and restoration codes for an extended floating-point system register 
    in an interrupt function has been added.

3. Register Bank Function
    A compile option to output save and restoration codes according to save mode in an interrupt function that uses 
    the register bank function has been added.

4. G4MH Core Interrupt/Exception Processing
    Interrupt specifications that can be specified in the #pragma interrupt instruction have been added.

5. G4MH Core Embedded Functions
    Embedded functions that use the G4MH core instruction set have been added.

6. Debug Instruction Embedded Functions
    Debug instruction embedded functions have been added.

7. C99 Standard Library Functions
    Part of the C99 standard library functions have been supported.

8. Inline Expansion of Standard Library Functions
    A compile option to control whether to use function calls or inline expansion to generate a code that calls 
    some standard library functions has been added.

9. Code Generation for Efficient Execution of Floating-point Operations
    A compile option to generate operation codes for efficient execution of floating-point operations has been added.

10. Code Generation for Floating-point Reciprocal Operations
    A compile option to generate the recipf instruction for floating-point reciprocal operations has been added.

11. Expansion of the Function to Detect Illegal Indirect Function Calls [Professional edition]
    The function to detect indirect function calls to illegal addresses has been expanded so that a library file (*.lib) 
    can be removed from the function list used for illegal indirect function calls.

12. Output of CRC Operation Results for Binary Files
    CRC operation results for binary files can now be output.

13. Changing the First Load Address of a Hex File
    A function to change the first load address of an Intel expanded hex file or Motorola S type file being output has been added.

14. Problem Fixed
    The following problems have been fixed.
    - Static declaration of a structure, an array, or a union that has an initializer (No. 19)
    - Assembly-language code using reserved symbol (No. 20)
    - Section where the initializers of auto variables are allocated when the -Xmulti_level option is specified (No. 21)
    - Compiler option “-store_reg” (No. 22)

Changes from V1.06.00 to V1.07.00 (Jan. 22, 2018)

1. C99 standard
    C99 standard of language specification has been supported.

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 111 to 119.

3. Feature for detecting illegal indirect function calls [Professional edition]
    A feature for detecting indirect function calls to illegal addresses has been added.

4. PIC/PID facilities
    PIC and PID facilities have been added for the allocation of functions, constants, or variables to given addresses 
    that differ from those they would otherwise be given when linking.

5. Enhanced optimization
    The performance of generated code has been improved

6. Upper limits on usable amounts of memory
    The amounts of memory on the host computer that are usable by the CC-RH compiler have been expanded.
    - 2 Gbytes with the 32-bit and 64-bit OSs [V1.06.00 and earlier versions]
    - 3 Gbytes with the 32-bit OS and 4 Gbytes with the 64-bit OS [V1.07.00 and later versions]

7. Initialization of automatic variables by using immediate values
    Initialization of structure-type or array-type automatic variables by using immediate values has been added. 

8. Control of messages
    A feature for changing warning messages to error messages has been added.

9. Fixing of the record length of the HEX file
    A linker option, which causes the output addresses of Intel HEX files (.hex) and Motorola S-record files (.mot) 
    to have a specified alignment and be output with a fixed record length, has been added.

10. Rectified points for caution
    The problems regarding the point below has been fixed.
    - The pow function returning incorrect values (No.9)
    - Using a goto statement to move to a label in a switch statement (No.16)
    - Math library functions that contain FPU instructions (No.17)
    - Loop statements with loop-control variables in which constants are used as the condition for ending the loop (No.18)

Changes from V1.05.00 to V1.06.00 (Jul. 20, 2017)

1. 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 103 to 111.

2. Synchronization function when control registers are updated [Professional edition]
    The professional edition of CC-RH has supported the insertion of synchronization processing into positions 
    where the updating of control registers and the updating is consecutive.

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

4. Measurement of times for CAN communications
    When CS+ is used with the E2 emulator to measure times for CAN communications, the -insert_dbtag_with_label 
    option has been added.
    This option is used by CS+ in measuring times for CAN communications; it is not specified by the user 
    when running a build.

5. Change to the output of the initial values for array type variables
    The output of the initial values for array type variables in assembly source code has been changed so 
    that the values are collectively output on one line.

6. Addition of special symbols
    A system for reference by C source code generated by the linker at the start and end of a section has been 
    added by the inclusion of special replacement symbols.

7. Change to the specification of link map files
    The ATTRIBUTE column which is the relocation attribute has been added to “Mapping List” of the link map file.

8. 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.

9. Addition of numbers to messages when using the evaluation version
    Numbers W0561016 and W0561017 have been added to the messages that may be output during building by using 
    the evaluation version.

10. Change to the messages for linkage errors
    The file name has been output in messages for the linkage error “F0563102”.

11. Improvement to the method of authenticating licenses
    The way licenses are authenticated was improved to reduce build times.

12. Problems Fixed
    The problem regarding the point below has been fixed.
    - Point for caution on the #pragma pmodule extended language (No.15)

Changes from V1.04.00 to V1.05.00 (Jan. 20, 2017)

1. Support for a half-precision floating-point type [Professional edition]
    A half-precision floating-point type has been supported. 
    Half-precision values can reduce the amounts of data for applications which have large amounts of floating-point data.

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 103.

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

4. Added compiler option: -g_line
    The -g_line option has been added to improve the accuracy of information for use in debugging source code.

5. Extension to the #pragma inline_asm directive
    The .public directive can be included in functions for which the #pragma inline_asm directive is specified.

6. Change to the specification of the __stcw intrinsic function
    The return type of the __stcw intrinsic function has been changed from void to long.

7. Change to the specification of the -subcommand linkage option
    The –subcommand option has been made specifiable in subcommand files.

8. Change to the specifications of the –map and -list linkage options
    The specifications of the –map and -list linkage options have been changed. 
    With this change to the specification, applicable scope of optimization of access to external variables has been extended.

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

10. Problems Fixed
    The problems regarding the points below have been fixed.
    - Built-in Function __stcw ( ) (No. 10)
    - Programs which include loops that should be iterated more than once (No. 12)
    - Updating of Values of Array Elements, Structure Members, or Union Members Not being Reflected (No. 13)
    - The loop that has the operation expression of which result is decremented by one (No. 14)

Changes from V1.03.00 to V1.04.00 (Jul. 21, 2016)

1. Improved 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 doubled, from 41 to 82.

3. Enhancing the Security of Dynamic Memory Management [Professional edition]
    A feature has been added for the detection of illicit operations in the release of heap space.

4. Addition of a Feature to Check for Exclusive Control
    We have added a feature to check for exclusive control to CS+.

5. Problems Fixed
    The problems regarding the points below have been fixed.
    - External labels defined after conditional assembly control instructions (No. 7)
    - Designating a member of a packed structure or union in an initializing declaration (No. 8)
    - Scope of optimization (No.11)

Changes from V1.02.00 to V1.03.00 (Oct. 20, 2015)

1. Standard and Professional editions
    The CC-RH complier has the following two editions.
    - Standard edition
    - Professional edition

2. Support for the G3KH core
    g3kh is specifiable as the argument of the -Xcpu option.

3. Enhanced -Xalign4 option
    The -Xalign4 option has been enhanced. Addresses where loops start can be aligned with 4-byte boundaries.

4. CRC calculation
    The -CRC linker option, which performs a CRC calculation and places the result at a specified address, has been added.

5. Extension to the -Xpatch option
    The -Xpatch option for the microcomputer which loads the G3M core has been extended.

6. Removal of notes
    Five notes on using CC-RH below have been removed.
    -  Designating immediate values as the operands of assembly instructions (No. 2)
    -  The Definition of and Reference to a Label being in the Same Assembly Unit (No. 3)
    -  Omitting Base Registers in Assembly Instructions (No. 4)
    -  Assembly Statements Not in Accord with the Specification (No. 5)
    -  Optimization of access to external variables placing them over a 4-Mbyte or greater range of addresses (No. 6)

7. Checking of source code against MISRA-C:2004 rules
    The feature for checking of source code against MISRA-C:2004 rules can only be used
     if the compiler is registered under the professional license.

8. Checking of source code against MISRA-C:2012 rules
    The feature for checking of source code against MISRA-C:2012 rules has been added. 
    This feature can only be used if the compiler is registered under the professional license.

9. Detection of stack smashing
    The feature for the detection of stack smashing has been added.
    This feature can only be used if the compiler is registered under the professional license.

Changes from V1.01.00 to V1.02.00 (Mar. 5, 2015)

1. Support for the G3MH core
    The specifications have been changed so that designating g3mh as the argument of -Xcpu option is now possible.

2. Added an option to designate the precision of double-type variables
    A -Xdbl_size option for designating the precision of variables of the double and long-double types has been added.

3. Added an option to select the rounding mode for floating point types
    A -Xround option for designating the rounding mode for floating point constants has been added.

4. Added an option to change a default allocation section
    A -Xsection option for changing the allocation of sections from the default allocation has been added.

5. Added an option to designate aligning the addresses where functions start with four-byte boundaries
    An -Xalign4 option for designating the alignment of the addresses where functions start with four-byte boundaries has been added.

6. Output of the addresses of structure members to a link map file
    "struct" has been added as a value for the linker's -show option.

7. Added predefined macros
    The predefined macros which can be used when compiling or assembling have been newly added.

8. Removal of restrictions
    One restriction below has been removed.
    - Point to note regarding the use of both judgment of a match and greater or less than for variables (No.1)

9. Changes to other specifications
    The specification of -Xasm_option with the -Xasm_far_jump option has been changed.
    And the specification when a relative label is designated as the operand for a JMP instruction has been changed.

Changes from V1.00.01 to V1.01.00 (Jul. 16, 2014)

1. Enhancement of Pipeline Optimization
    Pipeline optimization has been enhanced. The execution speed may be improved when pipeline optimization is enabled.

2. Improvement in Structure Copying Processing
    Structures were copied in 1-byte units in the former version, but the processing has been improved to copy them
    in an optimum size according to the alignment value. This improves the structure copying speed.

3. Acceleration of Mathematical Functions
    The following mathematical functions have been accelerated.
    -sinf()
    -cosf()
    -tanf()
    -asinf()
    -atanf()
    -acosf() 

4. Acceleration of Run-Time Functions
    Run-time functions for long long-type division and remainder operations have been accelerated.
 
5. Changes in Specifications of Intrinsic Functions
    For the following intrinsic functions, the range of the values specifiable for selID has been changed from 0 to 7 to 0 to 31.
    -__ldsr_rh
    -__stsr_rh

6. Expansion of -padding Option Specifications
    The specifications have been changed for the "-padding" linker option, which fills in data at the end of a section.
    In V1.00.01, padding was done only for sections that contained text data, const variables, or variables with initial values. In V1.01.00,
    this option is also applicable to sections without initial values.