Keil Logo

What's New in C251 Version 5.54

  • [C251 Compiler]
    • Added: optimization for handling of 32 bit numbers.
    • Added: optimization for for functions that do never return. This functions need to use __attribute__ ((noreturn)).
    • Corrected: assembler instructions used as label name erroneously thrown an Syntax-Error in SRC mode.
    • Corrected: a potential inline-assembler macro problem with '#' when meant for the #imm operand. Example:
      #pragma SRC
      
      #define AOP         \ 
         __asm { NOP }    \ 
         __asm { MOV A,#1 }    // incorrect generated error C302: misused # operator
      
      void main (void) {
        AOP
      }
      
    • Corrected: incorrect error C143 "initializer is not a constant" generation at cast of a constant pointer which is part of a struct. Example:
      struct GlStruct {
        char a;
        char cArr[1];
      };
      
      long offset = (long) (*(struct GlStruct*)0x0D000000).cArr;   // incorrect generated error: C143 "initializer is not a constant"
      
    • Corrected: incorrect error C83 "incompatible types" generation when used floating point types togehter with & operator. Example:
       volatile unsigned long  ul2;
       volatile signed char    sc1;
       volatile signed char    sc2;
      
       void main(void) {
         ul2 = 2147483647L;
         sc1 = -1;
         sc2 = 1;
         (ul2 ^= (((( ! ( (double) (char)127))) > ((( -- sc2)))) & sc1));  // incorrect generated error C83: '&': incompatible types
       }
      
    • Corrected: huge at function definition is not allowed. Erroneously has been taken as near. Example:
      void huge hg_fnc() {  }   // The warning C65: 'hg_fnc': illegal use of near/far/huge will be generated.
      
  • [L251 Linker]
    • Corrected: a potential incorrect overlap of data segments when this features are used in combination:
      • Overlapping segments by command line directives.
      • Linker Code Packing optimization with ROM (HUGE) model.
      • Code segments placed in the same 64KB region as the DATA segments.
  • [A251 Assembler]
    • Added: support for forward slash (/) as path seperator.
  • [C Run-Time Library]
    • Corrected: the function free failed when the complete memory pool was allocated.
    • Corrected: the HPTR variant of the function float LOG does not work.
  • [µVision]
    • This C251 release is delivered with µVision V4.60.6.9 IDE.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.