Configure: New MD generator partition counts, AArch64 default set
Configures machine description generators with per-generator partition counts and sets AArch64 default to 6:6:1.
This commit enhances GCC’s configuration process by allowing separate partition counts for the machine description generators (genemit, genrecog, genattrtab). It introduces --with-md-generator-partitions and deprecates the old --with-insnemit-partitions. The AArch64 target is now configured with a default of 6:6:1 partitions for these generators to balance compile times and performance. The changes also improve Makefile dependency handling and cleanup of generated sources.
In Details
The configuration system now supports a colon-separated value for --with-md-generator-partitions (replacing --with-insnemit-partitions) to control partition counts for genemit, genrecog, and genattrtab independently. The default remains 10. AArch64 is set to 6:6:1, balancing compile time and object size by limiting partitions for genemit/genrecog to avoid excessive preamble/postamble overhead while keeping genattrtab at one partition. Makefile dependencies are updated to ensure regeneration upon partition count changes.
- machine description (MD) generator
- Tools within GCC (like genemit, genrecog, genattrtab) that process machine description files (e.g., .md files) to generate C code for instruction recognition, emission, and attribute handling.
- partitions
- In the context of GCC's build system, partitions refer to dividing the work of a generator (like genemit) into multiple output files or compilation units. This is done to parallelize compilation and reduce the size of individual objects.
- genemit
- A GCC machine description generator responsible for producing C code that emits (generates) machine instructions.
- genrecog
- A GCC machine description generator responsible for producing C code that recognizes machine instructions.
- genattrtab
- A GCC machine description generator responsible for producing C code that handles machine-specific attributes.
- AArch64
- The 64-bit implementation of the ARM architecture, commonly used in mobile devices and servers.
- Makefile
- A file used by the
makeutility to determine how to build and link a program. It contains rules that describe dependencies between source files and object files.