GCC Newspaper
JUNE 15, 2026
Date
/
Architectures
Components
Topics
News & Policy
Other
aarch64

AArch64 assembler bug workaround becomes configurable in GCC.

GCC for AArch64 now allows configuring a workaround for an assembler bug, resolving conflicting issues across different assemblers.

This commit makes a workaround for a specific assembler bug on AArch64 configurable within GCC. Some assemblers require the +crc flag to be emitted even when the base architecture inherently supports it, while other assemblers encounter a different bug when this flag is present. By making this behavior configurable in aarch64-common.cc, developers can now enable or disable the workaround as needed to ensure correct assembly generation across various AArch64 toolchains, preventing compilation failures caused by assembler inconsistencies.

In Details

The +crc directive in AArch64 assembly controls the generation of CRC (Cyclic Redundancy Check) instructions. While the base AArch64 architecture may support CRC, some older or non-standard assemblers have a bug where they either require the explicit +crc even when not strictly necessary, or conversely, break when it's present. This change introduces a configuration option within common/config/aarch64/aarch64-common.cc to allow toolchain integrators to adapt GCC's AArch64 output to the specific quirks of their assembler, managing the interaction between GCC's code generation and assembl…

For Context

When you compile code for a computer chip like AArch64, the compiler first turns your human-readable code into an intermediate language called assembly. Then, an \"assembler\" translates that assembly into the final machine code the chip can understand. Sometimes, these assemblers can have small quirks or \"bugs.\" This update to GCC for AArch64 introduces an option to turn on or off a workaround for one such assembler bug. This is important because different assemblers might react differently to certain instructions, and this configurability ensures that GCC can generate correct code for a wider range of AArch64 development setups.

Filed Under: aarch64assemblerworkaroundconfiguration