| |||
| Home > Revisions for the Compiler Reference | |||
This appendix describes the technical changes between released issues of this book.
Table 45. Differences between C update 3 and issue C update 4
| Change | Topics affected |
|---|---|
| Added the options --conditionalize, and --no_conditionalize. | --conditionalize, --no_conditionalize |
| Added SC000 to the table of --cpu options. | ‑‑cpu=name |
| Added 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 46. Differences between issue C update 2 and issue C update 3
| Change | Topics 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 |
Added the options --allow_fpreg_for_nonfpdata and --no_allow_fpreg_for_nonfpdata. | --allow_fpreg_for_nonfpdata, --no_allow_fpreg_for_nonfpdata |
| Added list of built-in GNU atomic memory access functions. | GNU builtin functions |
Changed option from --implicit_using_std to --using_std. | |
| Added v7E-M to table of Thumb architecture versions in relation to ARM architecture versions. | |
| Added a note that some registers are not available on some architectures. | |
Added the --depend_single_line and --no_depend_single_line options. | |
Modified description of --remove_unneeded_entities option. | |
| Added link to command line options and search paths. | |
Added ARMINC environment
variable as a search path. | |
| Added trademarks to the description of FLEXnet for ARM DS-5 License Management Guide. | |
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. | |
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. | |
| Changed FPv4_SP to FPv4-SP. | |
| Added ARM Glossary to other information. | |
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". | |
| 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 47. Differences between issue B and issue C
| Change | Topics 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 48. Differences between issue A and issue B
| Change | Topics 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 ≤ x ≤ 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=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( | __align |
| 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. | |
Changed addition to subtraction for both of
the val options in the __ssub16 intrinsic. | __ssub16 intrinsic |