[PATCH] D133848: [Clang][AArch64] Support AArch64 target(..) attribute formats.

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 14 03:57:22 PDT 2022


dmgreen created this revision.
dmgreen added reviewers: simon_tatham, ilinpv, danielkiss, craig.topper, erichkeane, sdesmalen, efriedma.
Herald added subscribers: StephenFan, pengfei, mgrang, kristof.beyls.
Herald added a reviewer: aaron.ballman.
Herald added a project: All.
dmgreen requested review of this revision.

This adds support under AArch64 for the target("..") attributes. The current parsing is very X86-shaped, this patch attempts to bring it line with the GCC implementation from https://gcc.gnu.org/onlinedocs/gcc/AArch64-Function-Attributes.html#AArch64-Function-Attributes.

The supported formats are:

- `"arch=<arch>"` strings, that specify the architecture features for a function as per the `-march=arch+feature` option.
- `"cpu=<cpu>"` strings, that specify the target-cpu and any implied atributes as per the `-mcpu=cpu+feature` option.
- `"tune=<cpu>"` strings, that specify the tune-cpu cpu for a function as per `-mtune`.
- `"+<feature>"`, `"+no<feature>"` enables/disables the specific feature, for compatibility with GCC target attributes.
- `"<feature>"`, `"no-<feature>"` enabled/disables the specific feature, for backward compatibility with previous releases.

To do this, the parsing of target attributes has been moved into TargetInfo to give the target the opportunity to override the existing parsing. The only non-aarch64 change should be a minor alteration to the error message, specifying using "CPU" to describe the cpu, not "architecture", and the DuplicateArch/Tune from ParsedTargetAttr have been combined into a single option.


https://reviews.llvm.org/D133848

Files:
  clang/docs/ReleaseNotes.rst
  clang/include/clang/AST/Attr.h
  clang/include/clang/Basic/Attr.td
  clang/include/clang/Basic/AttrDocs.td
  clang/include/clang/Basic/DiagnosticSemaKinds.td
  clang/include/clang/Basic/TargetInfo.h
  clang/lib/AST/ASTContext.cpp
  clang/lib/Basic/TargetInfo.cpp
  clang/lib/Basic/Targets/AArch64.cpp
  clang/lib/Basic/Targets/AArch64.h
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/CodeGen/TargetInfo.cpp
  clang/lib/Sema/SemaDecl.cpp
  clang/lib/Sema/SemaDeclAttr.cpp
  clang/test/CodeGen/aarch64-targetattr.c
  clang/test/Sema/attr-target.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133848.460017.patch
Type: text/x-patch
Size: 35131 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220914/a33712cd/attachment-0001.bin>


More information about the llvm-commits mailing list