[PATCH] D103184: [AArch64] handle -Wa,-march=
Jian Cai via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 2 14:42:23 PDT 2021
jcai19 marked an inline comment as done.
jcai19 added a comment.
In D103184#2793055 <https://reviews.llvm.org/D103184#2793055>, @DavidSpickett wrote:
> $ cat /tmp/test.s
> irg x0, x0
> $ aarch64-unknown-linux-gnu-as -march=armv8.5-a+memtag -march=armv8.1-a /tmp/test.s -o /dev/null
> /tmp/test.s: Assembler messages:
> /tmp/test.s:1: Error: selected processor does not support `irg x0,x0'
>
> GAS is also taking the last value of `march`. So if we were to follow clang Arm's behaviour, the result would be the same.
>
> Except we don't have to rely on the llvm backend picking the last of "target-feature". Which probably works for architecture versions but for individual extensions I don't think so.
>
> If we make it additive this could happen:
>
> -march=armv8.5-a+memtag -march=armv8.2-a
>
> Becomes: (mte is the backend name for memtag for silly reasons)
>
> -target-feature +v8.5-a -target-feature mte -target-feature +v8.2-a
>
> So now instead of getting `v8.2` only, the user now has `v8.2+memtag`. Only if they do `armv8.2-a+nomemtag` will they get what they expect (well, what I'd expect). Which means they'd need to know every previous march value.
Thanks for double checking! I've changed my implementation since I made that comment to take the last value of -Wa,march (and only for assembly files) and added more test cases. It should now follows the Arm behavior.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103184/new/
https://reviews.llvm.org/D103184
More information about the cfe-commits
mailing list