You copied the Doc URL to your clipboard.

Revisions for Using the Compiler

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

Table 26. Differences between issue G and issue H
ChangeTopics affected
Added information on estimating/measuring stack usage.Stack use in C and C++.
Clarified which LDM instructions are not supported in the inline assembler.Inline assembler instruction restrictions in C and C++ code.
Documented Cortex-M0+ support.Processors and their implicit Floating-Point Units (FPUs).
Added two topics.

Table 27. Differences between issue F and issue G
ChangeTopics affected
Clarified the difference between __packed and #pragma pack for address-taken fields.Comparisons of an unpacked struct, a __packed struct, and a struct with individually __packed fields, and of a __packed struct and a #pragma packed struct.

Where appropriate, rather than 16-bit Thumb or 32-bit Thumb, referred instead to Thumb or Thumb-2 technology.

Various topics.
Added three entries for VFPv4.Vector Floating-Point (VFP) architectures.
Added Cortex-A7.
Revised the topics related to integer division by zero.

Table 28. Differences between issue D and issue F
ChangeTopics affected
Revised the descriptions for topics related to integer division by zero.
Mentioned that VFPv2 instructions are supported in inline assembly. Mentioned that instructions in VFPv3 or higher are not supported by inline assembler.
Changed the description of the restrictions on the inline assembler.
Removed the example of using coprocessor instructions in inline assembler because coprocessor instructions in inline assembler are discouraged. Added a new example for the use of VFP instructions in inline assembler.Inline assembler Vector Floating-Point (VFP) restrictions in C and C++ code.
Added a row on VFP and NEON for differences between inline and embedded assembler.

Differences in compiler support of inline and embedded assembly code.

Where appropriate:

  • prefixed Thumb with 16-bit

  • changed Thumb-1 to 16-bit Thumb

  • changed Thumb-2 to 32-bit Thumb.

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

Table 29. Differences between issue C and issue D
ChangeTopics affected
Added a topic on using GCC fallback.Using GCC fallback when building applications.
Removed the topics on Profiler-guided optimizations.Compiler Features.
Removed reference to ARM Profiler.Code metrics.
Removed references to Eclipse Workbench IDE and ARM Profiler.Code metrics for measurement of code size and data size.

Merged the following topics into the topic Stack use in C and C++:

  • Methods of estimating stack usage

  • Methods of reducing stack usage

  • Using a debugger to estimate stack usage.

Changed --info=summary stack to --info=summarystack. Also removed references to ARM Profiler.

Rephrased branches to function calls.

Stack use in C and C++.
Removed the note about profiler guided optimizationsInline functions.
Removed reference to --profileInline functions and removal of unused out-of-line functions at link time.
Changed ARMCC41* environment variables to ARMCCnn*. And added link to the topic Toolchain environment variables in the Introducing to ARM Compiler toolchain document.Various topics.
Changed ARM Compiler 4.1 to ARM Compiler 4.1 and later.
Removed mention of Vista.PreCompiled Header (PCH) files.
Removed mention of Solaris.
Changed onwards to later, and mentioned ARM Compiler 4.1.
Removed mention of FLEXlm licence.Compilation build time.
When -J is not specified on the command-line, mention that the compiler searches ARMCCnnINC, then ARMINC, then../include.Compiler command-line options and search paths.
Added ARMINC to the list of search paths.Factors influencing how the compiler searches for header files.
Added link to Compiler command line options and search paths.The ARMCCnINC environment variable.
Changed description to say that ARMCCnnINC might be initialized.The ARMCCnINC environment variable.
Moved "…is colon separated on UNIX …" to the topic on ARMCCnnINC.The ARMCCnINC environment variable.
Specify the search order when -I and -J are both specified.Compiler command-line options and search paths.
Added note to deprecate --ltcg.Automatic function inlining and multifile compilation.
Inline assembler definitions with __asm and asm can include multiple strings.

Table 30. Differences between issue B and issue C
ChangeTopics affected
Changed the doubleword alignment to be multiples of 8 instead of 4.Advantages of natural data alignment.

Table 31. Differences between issue A and issue B
ChangeTopics affected
New topic.Default compiler options that are affected by optimization level.
New topic.How the compiler handles bit-band objects placed outside bit-band regions.
Filename suffixes .i, .ii, .a, .lib, .so added.Filename suffixes recognized by the compiler.
Usage notes for .S suffix.Filename suffixes recognized by the compiler.
Description for .sx suffix.Filename suffixes recognized by the compiler.
Search criteria for armlink and armasm executables.Default compiler behavior.
Example code for promise.cIndicating loop iteration counts to the compiler with __promise(expr).
New topic.How to prevent uninitialized data from being initialized to zero.

Was this page helpful? Yes No