[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