12.4 Compiler changes between RVCT v3.1 and RVCT v4.0

Various changes have been made to armcc in RVCT v4.0.

The following compiler changes have been made:

Single compiler executable

The executables tcc, armcpp and tcpp are no longer delivered.

To compile for Thumb, use the --thumb command-line option.

To compile for C++, use the --cpp command-line option.


The compiler automatically selects C++ for files with the .cpp extension, as before.

Vectorizing compiler

The NEON vectorizing compiler is provided as standard functionality, and is no longer provided as a separate add-on. A license to use the NEON vectorizing compiler is provided with the Professional Edition of the ARM development tools.

VAST Changes

VAST has been upgraded through two versions (VAST 11 for 4.0 Alpha and 4.0 Alpha2 and later). Apart from the following issue, you do not have to make any changes to your v3.1 builds to use the new VAST.

RVCT v3.1 reassociated saturating ALU operations. This meant programs like the following could produce different results with --vectorize and --no_vectorize:

int g_448464(short *a, short *b, int n)
    int i; short s = 0;
    for (i = 0; i < n; i++)  s = L_mac(s, a[i], b[i]);
    return s;

In RVCT v4.0, you might see a performance degradation because of this issue.

The --reassociate_saturation and --no_reassociate_saturation command-line options have been added to permit reassociation to occur.

Non-ConfidentialPDF file icon PDF versionARM DUI0530M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.