================ @@ -305,6 +305,17 @@ X86 Support Arm and AArch64 Support ^^^^^^^^^^^^^^^^^^^^^^^ +- ARMv7+ targets now default to allowing unaligned access, except Armv6-M, and + Armv8-M without the Main Extension. Baremetal targets should check that the + new default will work with their system configurations, since it requires + that SCTLR.A is 0, SCTLR.U is 1, and that the memory in question is + configured as "normal" memory. We've made the value judgment that the + performance gains here outweigh breakages, since it is difficult to identify + performance loss from disabling unaligned access, but incorrect enabling + unaligned access will generate an obvious alignment fault on ARMv7+. This is + also the default setting for ARM's downstream compilers. We have not changed + the default behavior for ARMv6, but may revisit that decision in the future. ---------------- davemgreen wrote:
I would up-play the compatibility argument and downplay the judgement call a little. And mention the way to disable it. Maybe something like ``` - ARMv7+ targets now default to allowing unaligned access, except Armv6-M, and Armv8-M without the Main Extension. Baremetal targets should check that the new default will work with their system configurations, since it requires that SCTLR.A is 0, SCTLR.U is 1, and that the memory in question is configured as "normal" memory. This brings clang in-line with the default settings for GCC and Arm Compiler. The old behaviour can be restored with -mno-unaligned-access. ``` But you might want to re-add the reasoning about the performance/codesize loss. https://github.com/llvm/llvm-project/pull/82400 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits