CC-RL


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 V1.07.00 to V1.08.00 (Jan. 21, 2019)

1. C99 Standard Library Functions
    Support for standard library functions of the C99 language has newly been added and functionality for compliance 
    with the C99 standard have been added to existing standard library functions.

2. 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 MISRA-C:2012 rules.

3. 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 -misra2012 option for checking source code against MISRA-C:2012 rules.

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. Initialization of Stack Area in the Startup routine
    Initialization of stack area has been added in the startup routine.
    Note that there are no changes in the startup routine of the RL78-S1 core.

6. Enhancement of optimization
    The performance of generated code has been improved by proceeding with optimization for reducing the type sizes of variables according 
    to the ranges through which variables are updated within loops.

7. Rectified point for caution
    The following point for caution no longer applies.
    - Point for caution when a 1-bit signed bit field is written in the control expression of a switch statement (CCRL#020)
    - Point for caution when a structure or union having a member that is a far pointer is packed and allocated to the far area(CCRL#021)
    - Point for caution when the initial value of an integer-type member of a structure or union is an address constant(CCRL#022)
    - Point for caution when the -misra2012 option is specified(CCRL#023)

8. Other Modifications
    The generation of an internal error in response to building has been corrected.

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

1. C99 standard library functions
    Support for standard library functions of the C99 language has newly been added and functionality for compliance 
    with the C99 standard have been added to existing standard library functions.

2. Enhancement of output to HEX and binary files
    The facility for the output of data to HEX and binary files has been enhanced in the following ways.
    - The -crc option is also specifiable when the -form=binary option is specified. 
    - A new option -CHECK_OUTPUT_ROM_AREA to check whether the addresses of the data output to a HEX file extend 
      beyond the internal ROM or data flash area has been added. 
    - The linker option -output has been enhanced so that the load address can be specified in an Intel extended 
      HEX format file or a Motorola S-record file to be output. 

3. New facility for generating vector table sections split by vector table address
    A new option -SPLIT_VECT has been added to select the generation of vector table sections split by vector table address.

4. Enhancement of #pragma address directive
    #pragma address can be specified for a variable declared with __saddr.

5. Enhancement of #pragma section directive
    In CC-RL V1.06.00 and earlier versions, modifying the section names for string literals, branch tables for switch statements, 
    and initial values for aggregate-type automatic variables from the default names was not possible. 
    In CC-RL V1.07.00, the names can be modified by using the #pragma section directive.

6. Enhancement of the facility for detecting illicit indirect function calls [Professional edition]
    To enhance the facility for detecting indirect function calls to illicit addresses, which was a new facility in CC-RL V1.06.00, 
    the -cfi_ignore_module option has been modified to accept library files (*.lib) as parameters.

7. Enhancement of optimization
    The code generated for the long-type comparison to check for equality to zero has been improved and other optimization items 
    have been enhanced.

8. Rectified point for caution
    The following point for caution no longer applies.
    - Point for caution regarding the static variable declaration of an array, structure, or union that has an initializer (CCRL#019)

9. Other Modifications
    The generation of an internal error in response to building has been corrected.

Changes from V1.05.00 to V1.06.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 increased, 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 supported.

4. Specifying more than one vector table address for a hardware interrupt handler
    #pragma interrupt can be used to specify more than one vector table address for a single function.

5. Accessing indirect references by pointers in 1-byte units
    To support the porting of code written for the CA78K0R compiler, the CC-RL compiler newly supports 
    the -unaligned_pointer_for_ca78k0r option that leads to the generation of code for indirect reference 
    with 1-byte access to types without the volatile qualifier.

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

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

8. Control of messages
    The -change_message compiler option, which is used to change warning messages to error messages, has been added.

9. Fixing of the record length of the Intel HEX file
    The -fix_record_length_and_align 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. Addition of a message at linkage
    In V1.05.00 and earlier versions, the warning code W0561322 was output if sections with different alignment conditions 
    but the same names were linked. 
    In V1.06.00, warning code W0561331 is output when sections with the same names but different alignment conditions, 
    with the condition for one not being a multiple of that of the other, are linked.

11. Rectified points for caution
    The problems regarding the points below have been fixed.
    - Using a goto statement to move to a label in a switch statement (CCRL#016)
    - When a function has multiple arguments and also has assignment or comparison between formal arguments (CCRL#017)
    - Loop statements with loop-control variables in which constants are used as the condition for ending the loop (CCRL#018)

12. Other Modifications
    (1) Improved prevention of internal errors
          A problem with an internal error during building has been rectified.

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

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 increased, from 103 to 111.

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

4. 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. 
    This change reduces the load of analytical processing during building and so can reduce build times.

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. 
    In versions earlier than V1.05.00, the end record was output to suit the address of the entry point. 
    In V1.05.00, Motorola S-type files can be generated with specified types of end record.

6. Change to the specification of link map files
    The ATTRIBUTE column which is the relocation attribute was added to “Mapping List” of the link map file.
    When -show=relocation_attribute is specified, the relocation attribute corresponding to the section is output. 

7. Change to the messages for linkage errors
    The file name is output in messages for the linkage error “F0563102”.

8. Addition of an option for inserting a local label and nop instruction
    The -insert_nop_with_label option, which is used in the solution for measuring current drawn by CS+ or the e2 studio, 
    was added.
    This option is for use with CS+ or the e2 studio.

9. Extension of the functionality of the -vfinfo option
    The output attribute attribute was added to the -vfinfo option.
    In V1.05.00, specifying near functions as well as callt functions is now possible. 
    In addition, information on functions in sections specified for the ROM option or the far area is not output.

10. Extension of the functionality of the -binary option
    For the -binary option, items that are specifiable for the section attribute attribute have been extended.

11. Addition of #pragma near/far
    The #pragma directives can specify the near or far attribute of functions.
    The near or far attribute can be specified at the same time for multiple functions.

12. Addition of #pragma pack/unpack
    The #pragma directives can specify whether a structure is to be packed or not.
    Packing can be specified for parts of C source files.

13. Extension of the functionality of #pragma address
    #pragma address can specify an address for the allocation of const variables.

14. Acceptance of duplicated #pragma directives when the function to support porting is specified
    When the function to support porting is specified, the duplication of #pragma directives such as #pragma nop in code 
    will not lead to an error.

15. Addition of numbers to messages when using the evaluation version
    For messages output when building with an evaluation edition, No. W0561016 is appended to messages indicating 
    remaining days of the evaluation edition, and No. W0561017 is appended to messages indicating expiry. 
    This allows you to control these messages by -change_message. 
    For example, you can treat them as errors when using an evaluation edition.

16. Rectified points for caution
    The problems regarding the points below have been fixed.
    - Assembly Statements Not in Accord with the Specification (CCRL#001)
    - Relational Operators in the Control Expressions of switch Statements (CCRL#015)

17. Other Modifications
    (1) Improved runtime library for arithmetic operations on the float type
          Performance of the runtime library functions for the addition, subtraction, multiplication, 
          and division of float type variables has been improved.
    (2) Correction of a compiler
          The generation of compiler error code “F0530800” in response to specification of the -merge_files option 
          has been corrected.
    (3) Improved prevention of internal errors
          A problem with an internal error during building has been rectified.

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

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 increased, from 82 to 103.

3. Functional Expansion of the .VECTOR Pseudo Instruction
    An expansion has been made so that the interruption vector table and interruption handlers can be separately written to 
    different files.

4. Expansion of the #pragma inline_asm Directive
    An expansion has been made so that the .public pseudo instruction can be coded in the function specified by the #pragma 
    inline_asm directive.

5. Change to the Specification of Linkage Option -subcommand
    The -subcommand option can now be specified in a subcommand file.

6. Change to the Specification of Linkage Option -vfinfo/-list
    The -vfinfo option creates information about variables and functions. 
    In the past, when the section address was out of the available address range at the first build in which the -vfinfo option 
    was specified, it was treated as an error, the build processing was terminated, and the variable/function 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 variable/function information file. 
    The optimization of access to variables and functions has become applicable by this specification change.
    Additionally, a change has been made so that when the -vfinfo and -list options are specified simultaneously, 
    the symbol information is output to a link map file.

7. Method for Authenticating Licenses
    The method for authenticating licenses has been changed. To use CC-RL V1.04.00 or later, install V2.00.00 or later of License Manager.

8. Problems Fixed
    The problems regarding the points below have been fixed.
    - Programs which Include Loops that should be Iterated More than Once (CCRL#012)
    - Updating of Values of Array Elements, Structure Members, or Union Members Not being Reflected(CCRL#013)
    - The Loop That Has the Operation Expression of Which Result is Decremented by One (CCRL#014)

9. Other Modifications
    (1) Restriction on the output of bit manipulation instructions
         In versions earlier than V1.04.00, the compiler automatically determined the output of bit manipulation instructions 
         from the level of optimization and the statements in source code. In V1.04.00, users can control the output.
    (2) Correction of an internal error
         A problem which led to an internal error in the compiler when building has been fixed.

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

1. Enhanced optimization
    For V1.03.00, optimization has been further enhanced on points (1) to (4), listed and described below.
    (1) Merging of stack areas allocated for auto arrays in different local scopes (reducing the stack size)
         The compiler merges stack areas allocated for auto arrays that belong to different blocks ({}) whose lifetimes do not overlap.
    (2) Optimization of constant propagation
         Obviously recognizable calculations of constants within loops are omitted.
    (3) Optimization of induction variables
         The compiler does not generate code for redundantly updating loop induction variables.
    (4) Deleting unused code
         The ability to delete unused code has been further enhanced.

2. Improvements to the feature for checking source code against MISRA-C:2012 rules [Professional edition only]
    The following rule numbers have been added to those which can be designated as arguments of the -misra2012 option, 
    which selects checking by the compiler of source code against the specified 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

3. Enhancing the security of dynamic memory management [Professional edition only]
    A feature has been added for the detection of illicit operations in the release of heap space. 
    This feature can be used by linking a dedicated standard library of secure functions related to dynamic memory allocation.
    An error with code E0562310 will occur if the compiler is not registered for a license to the Professional edition.
    Run the dedicated standard library as follows.
    (1) As well as the actual areas allocated for users in the heap space by the calloc, malloc, and realloc functions, 
          two extra bytes for use in the detection of illicit operations are added before and after each area, for a total of four added bytes.
    (2) When called, the free and realloc functions determine if any of (a) to (c) applies.
         (a) The argument is not a pointer to an actual area allocated by calloc, malloc, or realloc.
         (b) The pointer is to an area that has already been released.
         (c) Neither of the two two-byte margins for detecting illicit operations has been overwritten.
    (3) In the event of any of the above, an illicit operation is assumed to have proceeded, and _heap_chk_fail will be called.
          The user must write the __heap_chk_fail function. 
          Write the processing which should be executed when any illicit operation has been detected in the heap space.
          By using this feature, you can easily counter security problems through measures against 
          the dual release of memory and against buffers overflowing.

4. Addition of the -Opipeline option
    The -Opipeline option for pipeline optimization has been added.

5. Addition of intrinsic functions for bit manipulation
    Intrinsic functions __set1, __clr1, and __not1 for bit manipulation have been added.

6. Rectified points for caution
    Points for caution on the following five items no longer apply.
    - External labels defined after conditional assembly control instructions (CCRL#006)
    - Designating a member of a packed structure or union in an initializing declaration (CCRL#007)
    - Writing an instruction operand in ways which are not included in the list of instruction operations(CCRL#008)
    - Outputting code which overwrites a register for interrupt handlers (CCRL#009)
    - Scope of optimization (CCRL#010)

7. Other changes and improvements
    Other major changes and improvements are described below.
    (a) Improved debugging information
          A problem with C and assembly source code not being displayed properly during debugging has been corrected.
    (b) Improved prevention of internal errors
          A problem with an internal error during building has been corrected.

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

1. Enhanced optimization
    The performance of the generated code has been improved.

2. Added options [Compiler]
    The following options have been added.
    (1) -g_line
        The information for the debugging of source code is enhanced in optimization.
    (2) -stack_protector [Professional edition only]
        Code for detecting stack smashing by a specified function is generated.
        Specifically, functions having structures, unions, or arrays with local variables exceeding 8 bytes are detected.
    (3) -stack_protector_all [Professional edition only]
        Code for detecting stack smashing by any function is generated.
    (4) -misra2012 [Professional edition only]
        The source code is checked against the MISRA-C:2012 rules.
    (5) -Osame_code
        Multiple instances of the same sequence of instructions in the same section of a compilation unit are integrated and converted 
        into a function.

3. Added #pragma directives [Compiler]
    The following #pragma directives have been added.
    (1)#pragma stack_protector [Professional edition only]
        Code which detects stack smashing by a specified function is generated.
    (2)#pragma no_stack_protector [Professional edition only]
        Code which detects stack smashing by a specified function is not generated.

4. Added options [Linker]
    The following option has been added.
    (1) -SYmbol_forbid
        The deletion of specified symbols not referred to is inhibited.

5. Extensions to the –Optimize option [Linker]
    symbol_delete, speed, and safe have been added to the parameters of the –Optimize option.
    (1) symbol_delete
        Variables and functions to which nothing refers are deleted.
        Be sure to also specify the “entry” option when using this in compilation.
    (2) speed
        Only forms of optimization other than those which raise the possibility of lowering the speed of the object code proceed.
    (3) safe
        Only forms of optimization other than those which raise the possibility of restricting variables and functions through their attributes proceed.

6. Restriction on the –Binary option [Linker]
    A restriction on the –Binary option has been added.
    [Restriction]
      Binary files for which the –Binary option is specified can only be allocated to the address range from 0 to 0x0FFFF. 
      Create assembly source code as shown below when allocating a binary file to the address range from 0x10000.
        .SECTION BIN_SEC, TEXTF
        $BINCLUDE(tp.bin)

7. Extensions to CRC calculation [Linker]
    CCITT, 16-CCITT-MSB, 16-CCITT-MSB-LITTLE-2, 16, and 32-ETHERNET can be specified for the –CRC option operation 
    in addition to 16-CCITT-MSB-LITTLE-4, 16-CCITT-LSB, and SENT-MSB in the previous version.
    (1) CCITT
        The result of calculation is obtained by applying CRC-16-CCITT to the input MSB first, 
        with the initial value of the result being 0xFFFF, and XOR inversion.
    (2) 16-CCITT-MSB
        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
        The result of calculation is obtained by applying CRC-16 to the input LSB first.
    (5) 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.

8. Added functions [Library]
    The following functions have been added to the standard library.
    (1) calloc
        A span of memory is allocated and initialized to zero.
    (2) free
        Releases memory.
    (3) malloc
        Allocates memory.
    (4) realloc
        Re-allocates memory.

9. Changes to startup routines [Startup]
    Statements of the const attribute have been deleted from the startup routines for devices which have no mirror space.

10. Rectified points for caution
    Points for caution on the following six items no longer apply.
    (1) Function definitions in K&R format (formal parameters of floating-point type)
    (2) Function definitions in K&R format (formal parameters of near pointer)
    (3) The output of code which rewrites argument values which have been pushed onto the stack
    (4) The return values of the memcmp, _COM_memcmp_ff, strcmp and _COM_strcmp_ff functions becoming invalid
    (5) The return value of the strtoul and _COM_strtoul_ff function becoming invalid
    (6) Non-default section names being used for the reserved words __sectop and __secend, and for the startof and sizeof operators

11. Added note
    A note on the following point has been added.
    (1) K&R style definition of the bsearch and qsort comparison functions
    [Reference]
        CC-RL Compiler (Document Number : R20UT3123EJ0102)
            11.2.6 Definition of comparison functions bsearch and qsort in K&R format

12. Changed note
    The details of the note on the following point has been changed.
    (1) Separation operator
    [Reference]
        CC-RL Compiler (Document Number : R20UT3123EJ0102)
            11.3.5 Separation operators