[all-commits] [llvm/llvm-project] 753aca: [AArch64] Add an error if SVE scalable vector type...

David Green via All-commits all-commits at lists.llvm.org
Thu Jan 12 10:21:43 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 753aca0a3ab0c1822ab3a95beaf8eaa91d7a157d
      https://github.com/llvm/llvm-project/commit/753aca0a3ab0c1822ab3a95beaf8eaa91d7a157d
  Author: David Green <david.green at arm.com>
  Date:   2023-01-12 (Thu, 12 Jan 2023)

  Changed paths:
    M clang/include/clang/AST/Type.h
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/lib/AST/Type.cpp
    M clang/lib/Sema/Sema.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/test/CodeGen/aarch64-targetattr-arch.c
    A clang/test/Sema/arm-sve-target.cpp

  Log Message:
  -----------
  [AArch64] Add an error if SVE scalable vector types are used in a context without sve

This adds an error message if the isSVESizelessBuiltinType like
__SVFloat32_t / __SVInt64_t / etc, which provide the backing for the
svfloat32_t / svint64_t / etc ACLE types, are used in a function without
SVE. The alternative is a crash in the backend, which is not capable of
handling scalable vector types.

When SVE is available, either through a -march=..+sve option or via a
target(sve) attribute, nothing should change. Without the sve feature,
this patch gives an error for any function arguments, return values and
variable declarations involving the scalable types. Struct/class members
and global variables already give an error. As this can be based on the
current function target attributes, the error sometimes needs to be
handled later than would otherwise if it was just based on the global
target.

Differential Revision: https://reviews.llvm.org/D131058




More information about the All-commits mailing list