You copied the Doc URL to your clipboard.

Revisions for the Compiler Reference

This appendix describes the technical changes between released issues of this book.

Table 45. Differences between issue E and issue F
ChangeTopics affected
Added a note stating that --device option is deprecated.
Added a note about the maximum version of gcc supported by armcc.--gnu_version=version
Mentioned that downgradeable errors are also suppressed with -J.-Jdir[,dir,...]
Modified the description for the --licretry option.--licretry
Added the --protect_stack option.--protect_stack, --no_protect_stack
Modified the description for the --version_number option.--version_number
Modified the description for the --vsn option.--vsn
Changed the format description for __ARMCC_VERSION.Predefined macros

Where appropriate:

  • changed Thumb-1 to 16-bit Thumb

  • changed Thumb-2 to 32-bit Thumb

  • changed Thumb-2EE to ThumbEE.

Various topics
Changed the ARMCCnn_CCOPT and ARMCCnnINC environment variables to ARMCCn_CCOPT and ARMCCnINC.Various topics

Table 46. Differences between issue D and issue E
ChangeTopics affected
Improved usage description of --reassociate_saturation.--reassociate_saturation, --no_reassociate_saturation
Added the encoding details of opcodes and registers.__cdp intrinsic
Added the options --allow_fpreg_for_nonfpdata, and --no_allow_fpreg_for_nonfpdata.--allow_fpreg_for_nonfpdata, --no_allow_fpreg_for_nonfpdata
Added the options --conditionalize, and --no_conditionalize.--conditionalize, --no_conditionalize
Added SC000 to the table of --cpu options.--cpu=name
Added SC300 and SC000 to the table of --compatible options.--compatible=name
Changed --depend=filename to say that for multiple files, the generated dependency file contains dependency lines from all the source files.--depend=filename
Added a caution that volatile is ignored if used with the __global_reg storage class specifier.__global_reg

Table 47. Differences between issue C and issue D
ChangeTopics affected
Added a summary table of intrinsics and their page numbers.Summary of NEON intrinsics
Added syntaxes and tables that provide a condensed representation of the intrinsics. Fixed minor errors in the intrinsic prototypes.Intrinsics
Removed the --profile option.Compiler Command-line Options
Added list of built-in GNU atomic memory access functions.GNU builtin functions
Added Cortex-A15 and Cortex-R7 to the cpu list.
Changed option from --implicit_using_std to --using_std.

Table 28

Added v7E-M to table of Thumb architecture versions in relation to ARM architecture versions.

Table 29

Added a note that some registers are not available on some architectures.

Named register variables

Added the --echo option.--echo
Added the --use_frame_pointer option.


Added the --depend_single_line and --no_depend_single_line options.
Changed ARMCC41* environment variables to ARMCCnn*.

Various topics

Changed ARM Compiler v4.1 to ARM Compiler 4.1 and later.
Added the --library_interface=none option.


Added the --preprocess_assembly option.


Added the -Warmcc,--gcc_fallback option.


Modified description of --remove_unneeded_entities option.

--remove_unneeded_entities, --no_remove_unneeded_entities

Changed --apcs options to use variable list.


Added note that the option is not required if you are using the ARM Compiler toolchain with DS-5.
Added link to command line options and search paths.
Added ../include as a search path.

--implicit_include_searches, --no_implicit_include_searches

Added const unsigned int for the variable declarations in the __cdp example. Also changed the value of ops from 0xAB to 0xA3 because the second opcode must be 3 bits.

__cdp intrinsic

Changed the note to say that the __irq function compiles to ARM or Thumb code when compiling for a processor that supports ARM and 32-bit Thumb. Added links to --arm, #pragma arm, and ARM, Thumb, and ThumbEE instruction sets.


Mentioned that PC is set to LR-4 only in architectures other than ARMv6-M and ARMv7-M. And added note that for ARMv6-M and ARMv7-M, __irq does not affect the compiled output.


Added note to deprecate --ltcg. Also added links to ltcg topics in Using the Compiler.


Changed FPv4_SP to FPv4-SP.


Added ARM Glossary to other information.

Conventions and Feedback

Removed #pragma GCC visibility from --visibility_inlines_hidden.


Added detail about mask and flags bit. Also added note and link to <fenv.h> topic in Using the Compiler. Changed "preferrable" to "ARM recommends".

VFP status intrinsic

Mentioned class, struct, union, and enum types in the Usage section. Also added that you can apply this attribute to functions and variables.
Changed --vfp to --fpu.


Corrected description of the --depend option when specifying multiple source files.


Table 48. Differences between issue B and issue C
ChangeTopics affected
Updated the Modes supported column, for example changed Standard C90 to C90. Added GNU C++ to Compound literals. Added C90, C99, C++ to Variadic macros. Changed the origin of __alignof__ to GCC-specific. Removed GNU C++ from void pointer arithmetic.Table 37
Removed the mention of the modes (C90 and C++) from the list of the Standard C99 features.GNU extensions to the C and C++ languages
Removed asm keyword from the list of features that are not part of the ISO standard. This is because the asm keyword is part of Standard C++. The asm keyword is mentioned separately.GNU extensions to the C and C++ languages
Renamed the column Extension origin to Origin. Mentioned GCC-specific in the Origin column for the entries on __attribute__*.Table 37

Table 49. Differences between issue A and issue B
ChangeTopics affected
Compiler faults use of at attribute when used on declarations with incomplete types.__attribute__((at(address))) variable attribute
Input parameter descriptions. User guidance that this intrinsic is for expert use only.__cdp intrinsic
Return value saturated to unsigned range 0 ≤ ≤ 2sat - 1.__usat intrinsic
Introductory and usage descriptions.__promise intrinsic
--ignore_missing_headers only takes effect when dependency generation options are specified.--ignore_missing_headers
Descriptive clarification for rvct30, rvct30_c90, rvct31, rvct31_c90, rvct40, rvct40_c90.--library_interface=lib
If using --show_cmdline with ARM Linux translation options, you must use -Warmcc.--show_cmdline
Cases where --show_cmdline can be useful.--show_cmdline
Clarification that --default_definition_visibility=visibility controls the default ELF symbol visibility of extern variable and function definitions.--default_definition_visibility=visibility
__declspec(dllimport) imports a symbol through the dynamic symbol table when linking against DLL libraries. (Textual clarification only.)__declspec(dllimport)
New topic--narrow_volatile_bitfields
Added APSR, PSR, DSP, MVFR1, MVFR0, FPINST, FPINST2.Named register variables
Additional GNU builtin functions.Nonstandard functions
Clarification to restrictions on use of __packed when casting.__packed
Added ARM v7E-M architecture, example processor Cortex-M4.--cpu=name
Added __TARGET_FEATURE_NEON.Predefined macros
New function attribute that is a GNU compiler extension supported by the ARM compiler.__attribute__((format_arg(string-index))) function attribute
Default option depends on optimization level.--data_reorder, --no_data_reorder

Removed "The keyword __align comes immediately before the variable name", because both of the following are now compilable:

__align(n) static int x;
static __align(n) int x;
GNU extensions to the C and C++ languages.
Restrictions clarification.--fpu=name
Default option is independent of the optimization level.--multifile, --no_multifile
Optimization level is independent of multifile compilation.-Onum
Options are not necessarily restricted to vectorization usage.--reassociate_saturation, --no_reassociate_saturation
Removed from document. Available as knowledgebase articles. See Summary Table of GNU Language Extensions.asm keyword, case ranges, cast of a union, character escape sequences, compound literals, conditionals, designated inits, extended lvalues, initializers, inline functions, labels as values, pointer arithmetic, statement expressions, unnamed fields, zero-length arrays.
Textual clarification.__wfi intrinsic
Textual clarification.__yield intrinsic
Changed the value of the modulo result for four intrinsic functions from modulo64 to modulo 264.

__smlald intrinsic

__smlaldx intrinsic

__smlsld intrinsic

__smlsldx intrinsic

Changed addition to subtraction for both of the val options in the __ssub16 intrinsic.__ssub16 intrinsic