This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Change list for RealView Compilation Tools available?

The Release_Notes.htm file in the ARM compiler gives an overview of changes made between MDK-ARM versions, but is there somewhere I can find out exactly what bug fixes/improvements have been made to the RealView compiler itself?

The behaviour of the compiler has changed between MDK-ARM versions 4.03a and 4.10, which is not surprising since the compiler is a new version in this release. However, this has resulted in some code developed on 4.10 (which compiles with no warnings) to fail with an error during compilation on 4.03a. Specifically I have a function which accepts a pointer to void, and am passing a function pointer to it.

I can make the code compile on both versions with some casting, but I would like to be able to see if this issue is known and if there are other issues we should be wary of.

Parents
  • (Initializing unions always initializes using the first member-type)

    As of C99, not necessarily. Among the things they added on top of C90 were named designators and non-default union initialization. So instead of this:

    layout_elements_t g_main_elements_table[] =
    {
            // Standard Elements
            { "Text",                     (void_fptr_t)sys_process_text },
            { "Table",                    (void_fptr_t)sys_process_table },
            { "Title",                    (void_fptr_t)sys_process_title },
    };
    
    


    you could now do

    layout_elements_t g_main_elements_table[] =
    {
            // Standard Elements
            { "Text",                     {.text = sys_process_text} },
            { "Table",                    {.table = sys_process_table } },
            { "Title",                    {.text = sys_process_title } },
    };
    

Reply
  • (Initializing unions always initializes using the first member-type)

    As of C99, not necessarily. Among the things they added on top of C90 were named designators and non-default union initialization. So instead of this:

    layout_elements_t g_main_elements_table[] =
    {
            // Standard Elements
            { "Text",                     (void_fptr_t)sys_process_text },
            { "Table",                    (void_fptr_t)sys_process_table },
            { "Title",                    (void_fptr_t)sys_process_title },
    };
    
    


    you could now do

    layout_elements_t g_main_elements_table[] =
    {
            // Standard Elements
            { "Text",                     {.text = sys_process_text} },
            { "Table",                    {.table = sys_process_table } },
            { "Title",                    {.text = sys_process_title } },
    };
    

Children
No data