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 H and issue I
ChangeTopics affected
Added new --loop_optimization_level option to list of compiler options.Compiler command-line options listed by group.
Update modified C3nnn message numbers to C4nnn.
Fixed command-line option example to use -O2.Order of compiler command-line options.
Removed all mention of LTCG.
Added information about enabling NEON and FPU for bare-metal.
Added information about using pragmas to control diagnostic messages.Controlling compiler diagnostic messages with pragmas.
Where appropriate, changed the terminology that implied that 16-bit Thumb and 32-bit Thumb are separate instruction sets.Various topics.

Table 27. 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 28. 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 29. Differences between issue D and issue F
ChangeTopics affected
Revised the descriptions for topics related to integer division by zero.
Mentioned that the inline assembler supports VFPv2 instructions. Mentioned that the inline assembler does not support instructions added in VFPv3 or higher.
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 30. 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 optimizations.Inline functions.
Removed reference to --profile.Inline 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 31. 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 32. 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.c.Indicating 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