https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82641
Bug ID: 82641 Summary: Unable to enable crc32 for a certain function with target attribute on ARM Product: gcc Version: 7.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: yyc1992 at gmail dot com Target Milestone: --- The assembler complains about the target not supporting CRC32 instructions for certain (generic) targets on ARM and AArch64. On AArch64, this can be lifted with the `target("+crc")` attribute (or pragma though I've only tested the function attribute) when writing inline assembly code that uses non-default processor features and cpu-feature dispatch. However, none of these approaches works on ARM. There are multiple issues when trying to do this, 1. "+crc" is not accepted as a feature on ARM (32bit), not even when `march` is set to `armv8-a`. OTOH, "armv8-a+crc" works though that makes supporting different arch profile harder... 2. No `.arch` or `.arch_feature` directives are generated in the assembly which cause the assembler to complain. This is the case for either function attribute or pragma. I've tried to manually added a `.arch armv8-a` and a `.arch_extension crc` before the function that uses the `crc32` instruction and then reset it back with `.arch armv7-a` in the assembly code and it behaves correctly so I believe this should be fixable on the GCC side.